私たちはマルチユーザトークンベースのJSPアプリケーションを持っています。 すべてのセッションを専用のクラスSessionManager
で管理しています。 新しいユーザーがアプリケーションページ(通常はホームページ)を開くと、後でセッションを初期化してマップにキャッシュし、関連付けられたトークンがそれ以上有効でないときにこのセッションを破棄します。だから、我々はSessionManager::init
とSessionManager::destroy
を持っています。マルチユーザJSP J2EEアプリケーションでExecutorServiceインスタンスを作成してシャットダウン
最近私は、AJAX呼び出しを介してフロントエンドから開始されたいくつかの非同期タスクと、時間のかかる方法について、このアプリケーションでExecutorService
を導入しました。
ExecutorService
インスタンスをセッション属性として作成してSessionManager::init
に設定し、このインスタンスを(Oracleが推奨するように)SessionManager::destroy
にシャットダウンします。このようにして、セッショントークンによって識別されるユーザごとに個別のExecutorService
インスタンスが存在し、ユーザはアプリケーションを使用する限り存続します。
私はそのようなアーキテクチャに満足していますが、ExecutorService
インスタンスを属性としてセッションに入れるのはどれだけいいですか。
もう1つの方法は、すべてのユーザーのセッションで使用できるようにExecutorService
インスタンスを作成して公開することです。スレッドセーフなシングルトンクラスとして実装されている可能性があります。 BUT私はこのアプローチを使用する場合、私はどこでシャットダウンするのか分からないExecutorService
インスタンスと私はする必要がありますか?
これは主な質問です。現在の実装にとどまっても問題ありません:ExecutorService
ユーザーごとのインスタンスが属性として現在のセッションに格納されていますか?