Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

12.2.1 グローバルセッションを利用したセッション管理の概要

セッションフェイルオーバ機能では,J2EEサーバ上のHttpSessionオブジェクトに登録されたオブジェクトの情報を,ほかのJ2EEサーバに引き継ぎます。

複数のJ2EEサーバ間で引き継いで使用できるセッションを,グローバルセッションといいます。HTTPセッションは,そのセッションを扱っているJ2EEサーバに障害が発生すると消失します。一方,グローバルセッションは,J2EEサーバとは別のサーバ(SFOサーバ)で管理されているため,J2EEサーバに障害が発生した場合も消失しません。このため,一つのJ2EEサーバで障害が発生した場合に,別のJ2EEサーバにHTTPセッションを作成して,グローバルセッションの情報を引き継ぐことができます。

グローバルセッションを使用している場合に,ほかのJ2EEサーバに引き継がれるHttpSessionオブジェクトの情報を,グローバルセッション情報といいます。

HTTPセッションとグローバルセッションの範囲について,次の図に示します。

図12-3 HTTPセッションとグローバルセッションの範囲

[図データ]

セッションフェイルオーバ機能では,J2EEサーバでの障害発生時にグローバルセッション情報を引き継ぐことで,ユーザにエラーを通知することなく,障害発生前の状態で業務を続行できます。グローバルセッション情報は,SFOサーバで管理されます。SFOサーバとは,システム内のグローバルセッション情報を管理するためのJ2EEサーバです。

セッション情報の引き継ぎの流れについて次の図で説明します。

図12-4 セッション情報引き継ぎの流れ

[図データ]

  1. J2EEサーバ1でHTTPセッションの生成後,グローバルセッション情報はSFOサーバに格納されます。
  2. J2EEサーバ1に障害が発生すると,処理を引き継いだJ2EEサーバ2では,SFOサーバに対して,グローバルセッションIDを基にグローバルセッション情報の取得を要求します。
    グローバルセッションIDとは,グローバルセッション情報を一意に識別するためのIDです。
  3. J2EEサーバ2では,セッションに対するリクエスト処理を開始する際に,グローバルセッション情報の同期をとるため,グローバルセッション情報に対してロックを掛けます。
  4. SFOサーバは,J2EEサーバ2にグローバルセッション情報を渡します。
  5. J2EEサーバ2でのリクエスト処理が完了すると,リクエスト処理で更新されたグローバルセッション情報は,SFOサーバに送信されます。
  6. SFOサーバ側で,グローバルセッション情報が更新されます。
  7. ロックが解除されます。

流れの中で出てきた項目について,以降の項で説明します。