セッションのタイムアウト・パラメーターの間隔に基づき実行する定期的な無効化タイマーを使用する代わりに、セッション管理機能に対して、分散環境における無効化セッションをスキャンする時間を具体的に設定できます。
分散セッションで使用する場合、
このフィーチャーには以下のような利点があります。
- 低いアプリケーション・サーバー・アクティビティーの時間に無効化セッションのスキャンをスケジュールして、
データベースまたは別の WebSphere Application Server インスタンスの無効化スキャンと
HTTP セッション要求を処理する読み取りおよび書き込み操作との間の競合を回避することができます。
- 「サービス・メソッドの終了」書き込みモードで実行すると、各 HTTP 要求でセッションへの最後のアクセス時間を書き出す必要がなくなるため、外部への書き込み操作の発生をかなり減少させることができます。
(手動更新オプションおよび時間基準書き込みオプションによって、既に最後のアクセス時間の書き込みは最小限になっています。)
使用上の考慮事項
- セッション・マネージャーは、スケジュールされた時間にのみセッションを無効化します。
したがって、セッションが無効化される前にそのセッションが要求された場合、
そのセッションはアプリケーションから使用できます。
- スケジュールされた無効化が構成されている場合、HttpSession タイムアウトは厳密には実施されません。
その代わりに、すべての無効化処理は、無効化の構成時に処理されます。
- HttpSession.invalidate メソッドが明示的に呼び出されない限り、
HttpSessionBindingListener 処理は構成された無効化の時間に行われます。
- HttpSession.invalidate メソッドは、
セッション・キャッシュと外部ストアの両方からのセッションを即時に無効化します。
- 定期的な無効化スレッドは、スケジュール化された無効化でも実行されます。現在の時刻が設定時刻に一致しない場合、無効化の間隔を超過したセッションはキャッシュから除去されますが、外部ストアからは除去されません。そのセッションに他の要求があると、そのセッションはキャッシュに戻されます。
- 定期的な無効化スレッドがいずれかの設定時刻に実行される場合、無効化の間隔を超過したセッションはすべて、キャッシュと外部ストアの両方から除去されて無効化されます。
- 定期的な無効化スレッドは、1 時間に複数回実行でき、必ずしもその時間のはじめに実行する必要はありません。
- 定期的な無効化スレッドの間隔を
HttpSessionReaperPollInterval カスタム・プロパティーを使用して指定した場合、無効化プロセスが少なくとも 1 時間に 1 度は行われるよう、3600 秒 (1 時間) を超える値を指定することがないようにしてください。