我正在使用JSF创建一个Web应用程序。
我有一个应用程序范围的bean,它具有无限循环,因此它会定期执行操作。
我的问题是这个bean(由于无限循环)阻塞了整个应用程序。我以为bean会在自己的线程上运行。不是JSF的情况,默认情况下每个托管bean都在自己的线程上运行?
我应该创建一个线程并让无限循环在该线程中运行吗?
谢谢
答案 0 :(得分:6)
应用程序作用域bean是否在JSF中的单独线程上运行?
不,它肯定没有。
不,你不应该。您应该只创建一个计划任务。最好的方法是使用我应该创建一个线程并让无限循环在该线程中运行吗?
@Singleton @Schedule
EJB。
@Singleton
public class SomeDailyJob {
@Schedule(hour="0", minute="0", second="0", persistent=false)
public void run() {
// Do your job here which should run daily at midnight.
}
}
这就是全部。没有必要手动搞乱线程的额外配置。如果要在JSF托管bean中访问其状态-if any,只需按常规方式注入@EJB
。