1

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

我有一个应用程序范围的 bean,它有一个无限循环,以便它定期执行一个动作。

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

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

谢谢你

4

1 回答 1

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

} 

就这样。无需额外配置手动弄乱线程。如果您想在 JSF 托管 bean 中访问其状态(如果有的话),只需使用@EJB通常的方式注入即可。

也可以看看:

于 2013-07-18T13:42:35.773 回答