从ApplicationScoped bean访问RequestContext是否需要同步?

我有两个问题:从ApplicationScoped bean访问RequestContext是否需要同步?

  1. 是合法的访问从PrimeFaces的RequestContext@ApplicationScoped豆里面?
  2. 必须向RequestContext访问同步?

支持bean

@ApplicationScoped 

public class MyDatabaseConnection

{

public void do()

{

RequestContext ctx = RequestContext.getCurrentInstance();

// ...

}

}

的index.xhtml

<p:commandButton actionListener="#{myDatabaseConnection.do}"/> 

回答:

是合法的从PrimeFaces访问的RequestContext的@ApplicationScoped豆里面?

是的,只要你不把它作为应用程序作用域bean的实例变量(属性)。

注意的是,同为FacesContextExternalContextHttpServletRequestHttpServletResponseHttpSesison,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

回到顶部