jsf/icesfaces アプリケーションに Open Session in View パターンを利用しています。いつものように、サーブレット フィルターは、「Web サーバー スレッド」の最初と最後ですべての休止状態セッションを開いたり閉じたりします。
私の問題は、たとえば非同期タスクを使用していることです。データベースからオブジェクトの大きなリストをロードします。したがって、タスクを実行する新しいスレッドを「手動で」作成しています。
今私の質問:そのような非同期タスクの休止状態セッションを処理する最良の方法は何ですか? スレッド自体で手動でセッションを作成する必要がありますか、それともスレッド用のサーブレット フィルターのようなもの (スレッドの開始時にセッションを開き、終了時にセッションを閉じるもの) がありますか?
ベストプラクティスなどに感謝します。ありがとうございました。
スレッドを作成するコードは次のとおりです。
protected static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5,
15, 50, TimeUnit.SECONDS, new LinkedBlockingQueue(20));
// called by action method of a button
private void asyncLoading() {
SessionRenderer.addCurrentSession(this.renderGroup);
threadPool.execute(new Thread() {
// do the thing to do (...)
}
}