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

pan*_*los 1 jsf managed-bean

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

我有一个应用程序作用域bean,它具有无限循环,以便它定期执行一个动作.

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

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

谢谢

Bal*_*usC 6

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

不,它肯定没有.

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

不,你不应该.您应该只创建一个计划任务.最好的方法是使用@Singleton @ScheduleEJB.

@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.
    }

} 
Run Code Online (Sandbox Code Playgroud)

就这样.没有必要手动搞乱线程的额外配置.如果要在JSF托管bean中访问其状态-if any,只需@EJB按常规方式注入即可.

也可以看看: