从ApplicationScoped bean访问RequestContext是否需要同步?
我有两个问题:从ApplicationScoped bean访问RequestContext是否需要同步?
- 是合法的访问从PrimeFaces的
RequestContext
的@ApplicationScoped
豆里面? - 必须向
RequestContext
访问同步?
支持bean
@ApplicationScoped public class MyDatabaseConnection
{
public void do()
{
RequestContext ctx = RequestContext.getCurrentInstance();
// ...
}
}
的index.xhtml
<p:commandButton actionListener="#{myDatabaseConnection.do}"/>
回答:
是合法的从PrimeFaces访问的RequestContext的@ApplicationScoped豆里面?
是的,只要你不把它作为应用程序作用域bean的实例变量(属性)。
注意的是,同为FacesContext
,ExternalContext
,HttpServletRequest
,HttpServletResponse
,HttpSesison
,etc..etc ..他们都没有应用范围的,因此可能会导致重大的麻烦被分配/共享为应用程序的属性时也是如此有限的bean。
我必须承认,你所选择的bean类名MyDatabaseConnection
真的让我害怕结合@ApplicationScoped
注解。数据库连接绝对不适用于应用程序范围。又见其中包括:Is it safe to use a static java.sql.Connection instance in a multithreaded system?
必须向RequestContext的访问同步?
不,你不需要。它在当前代码示例中已在方法local scope中获得,并且未作为bean的属性进行分配。
- How do servlets work? Instantiation, sessions, shared variables and multithreading
- How to choose the right bean scope?
如下回答应该了解 “请求”, “会话” 和 “应用” 范围的含义是有帮助
以上是 从ApplicationScoped bean访问RequestContext是否需要同步? 的全部内容, 来源链接: utcz.com/qa/261047.html