7.3.2 リクエスト実行時の処理

ここでは,リクエスト実行時のグローバルセッションの作成,更新,削除およびグローバルセッションの引き継ぎについて説明します。

Webアプリケーション内で処理が実行されると,処理の延長でグローバルセッション情報に対しての処理が発生します。Webアプリケーション内で実行される処理の例と,例に対応したリクエスト実行時のグローバルセッション情報に対して実行される処理,および参照先を次の表に示します。

表7-14 Webアプリケーション内での処理の例とグローバルセッション情報に対して実行される処理の対応

項番Webアプリケーション内で実行される処理の例グローバルセッション情報に対して実行される処理参照先
1ログイングローバルセッション情報の作成(1)
2業務の実行(ページ遷移/更新)グローバルセッション情報の更新(2)
3ログアウトグローバルセッション情報の削除(3)
4タイムアウトによるログアウト有効期限切れによるグローバルセッション情報の削除7.3.3
5グローバルセッションを引き継いだ別のJ2EEサーバでの業務の実行
(J2EEサーバでの障害発生時)
グローバルセッション情報を使用したセッション情報の引き継ぎ(4)

グローバルセッション情報操作中に障害が発生した場合の処理結果については,「7.3.4 グローバルセッション情報操作中の障害発生時の動作」を参照してください。

<この項の構成>
(1) グローバルセッション情報の作成
(2) グローバルセッション情報の更新
(3) グローバルセッション情報の削除
(4) グローバルセッション情報を使用したセッション情報の引き継ぎ

(1) グローバルセッション情報の作成

J2EEサーバ上で新規にHTTPセッションが作成されると,EADsサーバ上にグローバルセッション情報が作成されます。

グローバルセッション情報の作成で実行される処理の流れを次の図に示します。

図7-4 グローバルセッション情報の作成(EADsセッションフェイルオーバ機能)

[図データ]

  1. HTTPセッションが必要なリクエストを受け付け,セッションを取得します。Webアプリケーション内で,javax.servlet.http.HttpServletRequestインタフェースのgetSession()メソッド,またはgetSession(true)メソッドを使用してHttpSessionオブジェクトを新規に取得します。
    次のような場合もHttpSessionオブジェクトが作成されます。
    • Form認証を使用した場合
    • JSPでpageディレクティブのsession属性にtrueを指定した場合
    • JSPでpageディレクティブのsession属性の指定を省略した場合
  2. セッションIDが採番され,HTTPセッションが作成されます。HTTPセッションの作成処理の延長でグローバルセッション情報が作成されます。
    なお,新規に作成されたグローバルセッション情報には,セッションIDと使用状況が含まれます。使用状況には,新規作成直後でHTTPセッションの属性情報が格納されていないことを示す“NEW”が設定されます。
  3. 作成されたグローバルセッション情報は,EADsサーバ上のセッション情報キャッシュに格納されます。

(2) グローバルセッション情報の更新

Webアプリケーション実行中にセッションが更新されると,J2EEサーバでHTTPセッションが更新されます。それに伴って,EADsサーバ上のグローバルセッション情報も更新されます。

グローバルセッション情報の更新で実行される処理の流れを次の図に示します。

図7-5 グローバルセッション情報の更新(EADsセッションフェイルオーバ機能)

[図データ]

  1. HTTPセッションが存在するリクエストを受信し,Webアプリケーション内でセッションが更新されます。
  2. Webアプリケーションでのセッションの更新に伴って,HTTPセッションおよびグローバルセッションが更新されます。
  3. EADsサーバ上のセッション情報キャッシュのグローバルセッション情報が更新されます。

(3) グローバルセッション情報の削除

Webアプリケーション内でのセッションの削除処理でjavax.servlet.http.HttpSessionインタフェースのinvalidate()メソッドを実装し,明示的にHTTPセッションを削除すると,その処理の延長でEADsサーバ上のグローバルセッション情報が削除されます。

グローバルセッション情報の削除で実行される処理の流れを次の図に示します。

図7-6 グローバルセッション情報の削除(EADsセッションフェイルオーバ機能)

[図データ]

  1. Webアプリケーション内でHTTPセッションが無効化されます。
  2. HTTPセッションおよびグローバルセッション情報の削除が実行されます。
  3. EADsセッションフェイルオーバ機能が提供するユーザファンクションがEADsサーバ上で実行されます。
  4. EADsサーバ上でHTTPセッションの所有J2EEサーバ識別子の内容を確認して,操作中のJ2EEサーバの識別子と一致する場合は,グローバルセッション情報が削除されます。

(4) グローバルセッション情報を使用したセッション情報の引き継ぎ

受信したリクエストに関連づけられたHTTPセッションがJ2EEサーバ上に存在しない場合,EADsサーバ上のグローバルセッション情報を使用してHTTPセッションが再作成されます。これによって,Webアプリケーションでは,前回リクエスト処理を終了した時点の内容と同等のHTTPセッションが取得でき,業務を継続できます。

グローバルセッション情報を使用したセッション情報の引き継ぎで実行される処理の流れを次の図に示します。

図7-7 グローバルセッション情報を使用したセッション情報の引き継ぎ(EADsセッションフェイルオーバ機能)

[図データ]

  1. 受信したリクエストに関連づけられたHTTPセッションがJ2EEサーバ上に存在しない場合,EADsサーバ上のセッション情報キャッシュに格納されたグローバルセッション情報を使用して,J2EEサーバ上にHTTPセッションが再作成されます。
  2. EADsセッションフェイルオーバ機能が提供するユーザファンクション(グローバルセッション情報の取得と,HTTPセッションの所有J2EEサーバ識別子の変更)がEADsサーバ上で実行されます。
  3. EADsサーバ上でグローバルセッション情報の取得と,HTTPセッションの所有J2EEサーバ識別子の変更が実行されます。
  4. Webアプリケーション内でHTTPセッションが更新されます。
  5. Webアプリケーションの実行後,グローバルセッション情報が更新されます。
  6. EADsサーバ上のセッション情報キャッシュに格納されているグローバルセッション情報が更新されます。

注※ ただし,使用状況が“NEW”(HTTPセッションの属性情報が格納されていない)または“SERIALIZE_FAIL”(前のリクエストでHTTPセッションのシリアライズに失敗している)の場合は,グローバルセッション情報が引き継がれません。

なお,グローバルセッション情報の引き継ぎに成功した場合,KDJE34424-Iのメッセージがメッセージログに出力されます。クライアントから受信したセッションIDに対応するグローバルセッション情報がEADsサーバ上のセッション情報キャッシュに存在しないためにグローバルセッション情報の引き継ぎができなかった場合,KDJE34426-Wのメッセージがメッセージログに出力されます。