应用程序作用域bean是否在JSF中的单独线程上运行?

时间:2013-07-18 13:31:37

标签: jsf managed-bean

我正在使用JSF创建一个Web应用程序。

我有一个应用程序范围的bean,它具有无限循环,因此它会定期执行操作。

我的问题是这个bean(由于无限循环)阻塞了整个应用程序。我以为bean会在自己的线程上运行。不是JSF的情况,默认情况下每个托管bean都在自己的线程上运行?

我应该创建一个线程并让无限循环在该线程中运行吗?

谢谢

1 个答案:

答案 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

另见: