2011-04-27 49 views
0

嘿,我对jsf很新,所以如果这是一个糟糕的问题,那么我很抱歉。我目前正在研究一个学校项目,我需要通过Web服务访问数据库以获取一些基本的应用程序数据。我有一个类通过一个方法访问这些数据,然后从数据库返回最新的结果。JSF从应用程序bean中按时间间隔查询数据库

我想要做的是产生一个调用数据库更新方法的线程。 run方法看起来与此类似,我得到我的应用程序bean,然后调用它的刷新方法。

theFacesContext = FacesContext.getCurrentInstance();
ApplicationBean app = (ApplicationBean)theFacesContext.getELContext().getELResolver().getValue(theFacesContext.getELContext(), null, applicationbean);
app.getDBValues();

该线程将然后循环基础上,当应用程序Bean被破坏,将被设置为false的变量。我的错误是线程松散了facescontext。我已经看到一些帖子,人们在这些帖子中说了些什么,你必须将这个线索保存在一个请求中,但我不确定这意味着什么。任何建议都会非常有帮助。

回答

0

FacesContext确实无法在新线程中使用。这是因为它存储在ThreadLocal中,并且是根据请求启动的。

您可以获取所需的bean并将其传递给新线程,以便不再依赖面部上下文。