使用事例:
2 つの異なるマシンに展開されている tomcat で実行されている 2 つの Web アプリケーションがあります。私のアプリケーションの 1 つは親で、もう 1 つは子です。親アプリケーションにログインし、親アプリケーションのページの 1 つでリンクをクリックすると、別のブラウザ ウィンドウでページの 1 つを開くブラウザ リクエストが子アプリケーションに送信されます。このシナリオでは、両方のアプリケーションが同じタイムアウト値を共有し、1 つの完全なアプリケーションのように動作する必要があります。
処理するシナリオ:
- 親アプリからログアウトすると、子アプリもログアウトする必要があります
- 親ウィンドウを閉じると、親は子と一緒にログアウトする必要があります
- 子ウィンドウを閉じると、子はログアウトし、親はログインしたままにする必要があります
- 両方のウィンドウが閉じている場合、親と子の両方がログアウトする必要があります
解決:
- 親セッションのタイムアウトを何らかの値に設定します..たとえば30分
- 親でRESTサービスを作成します..「parentisAlive()」としましょう
- child で REST サービスを作成します。「childisAlive()」としましょう。
- 親と子でセッション リスナーを作成する
- 各セッション リスナーは、それぞれの REST サービスを呼び出します。
- REST サービスは、独自のアプリケーションのセッション ID に基づいて相互に通信します。
- 親は (メモリ/DB) 子のセッション ID を保持し、その逆も同様です。
- それぞれのタイムアウト値が特定の値に達すると、それぞれのアプリケーション セッション リスナーがアクティブになります。たとえば 20 分です。
- セッション リスナーは、それぞれの REST サービスを呼び出し、セッション タイムアウト値を相互に同期します。
これがセッション同期を実装するための良い解決策になるかどうか、誰か提案してもらえますか?これに欠陥があると思いますか?