Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 为什么使用线程时上下文为空?_Multithreading_Jsf - Fatal编程技术网

Multithreading 为什么使用线程时上下文为空?

Multithreading 为什么使用线程时上下文为空?,multithreading,jsf,Multithreading,Jsf,我使用的是PrimeFaces3.2,在JSF中使用线程时遇到问题。我无法从该线程获取对当前FacesContext的引用 如何获取该线程内该上下文的引用。当前的FacesContext存储在静态线程局部变量中。Servlet容器使用一个特定的线程来处理到达容器的每个请求/响应,因此,将FacesContext存储在线程局部变量中可以确保每个请求处理生命周期只有一个实例,这是应该的 当您试图从另一个线程获取对FacesContext的引用时,由于它存储为线程局部变量,并且您的新线程尚未初始化它,

我使用的是PrimeFaces3.2,在JSF中使用线程时遇到问题。我无法从该线程获取对当前
FacesContext
的引用


如何获取该线程内该上下文的引用。

当前的
FacesContext
存储在静态线程局部变量中。Servlet容器使用一个特定的线程来处理到达容器的每个请求/响应,因此,将
FacesContext
存储在线程局部变量中可以确保每个请求处理生命周期只有一个实例,这是应该的

当您试图从另一个线程获取对
FacesContext
的引用时,由于它存储为线程局部变量,并且您的新线程尚未初始化它,因此发生的情况是:您获得了
null
引用


如果您想要/需要另一个新线程中的faces上下文,唯一可能的方法是通过
FacesContextFactory
创建一个新的上下文实例。但是,您需要引用一个
HttpServletRequest
、一个
HttpServletResponse
和一个
ServletContext
来实例化它(我猜您将无法从单独的线程获得对这些对象的有效引用)。

'FacesContext fc=FacesContext.getCurrentInstance();'我刚刚创建了runnable线程并尝试创建faces上下文对象。