3.3 セッション管理について
セッション管理とは、リクエストとWebクライアントの対応付けをサーバIDとセッションIDを使って管理することです。業務システムの利用者がログインからログアウトまでの一連の業務処理を行う場合に、リクエストと業務情報を結びつける仕掛けをセッションと呼びます。セッション管理をすることで、ロードバランサーを使用したシステムでもセッションを継続できます。
セッション管理の仕組み
Application Serverでは、セッション中の一連のリクエストに対して、同一のセッションIDをCookieやクエリーストリングに付与して、セッションを継続させています。
ロードバランサーを配置するシステム構成で、セッションを維持する仕組みを次の図で説明します。
-
クライアントからの初回リクエスト
ロードバランサーが、クライアントから初回リクエストを受け付けると、ロードバランサーはApplication Server1に対してリクエストを転送します。このとき、ロードバランサーは、サーバ識別用のCookieをリクエストに含めてApplication Server1に送付します。
-
初回リクエストに対するレスポンス
Application Server1は、サーバ識別用のCookieとセッションIDをレスポンスに含めて、クライアントに返信します。
-
クライアントからの2回目のリクエスト
2回目のリクエストには、サーバ識別用のCookieを含めてロードバランサーに送付します。2回目のリクエストを受け付けたロードバランサーは、リクエストに含まれたサーバ識別用のCookieからリクエスト転送先を判別し、セッションを確立しているサーバ(Application Server1)にリクエストを送付します。
セッションIDの構成
Application Serverでは、セッションの管理に使用するセッションIDを一意にするため、セッションIDに対してサーバIDを付与しています。セッションIDの構成を次の図に示します。
セッションIDの33文字目以降に、Java EEサーバごとに異なる識別子であるサーバIDを含めることで、システム内に存在する複数のJava EEサーバ間で セッションIDが一意であることを保証します。