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 に答える