Cosminexus 機能解説
サーバの停止時,およびサーバの障害発生時のセッション情報の引き継ぎについて説明します。
ここでは,次の状態の場合のセッション情報の引き継ぎについて説明します。
J2EEサーバを停止すると,J2EEサーバ内のHTTPセッションは破棄されますが,SFOサーバ上にあるグローバルセッション情報は破棄されません。このため,別のJ2EEサーバにグローバルセッション情報を引き継いだり,停止したJ2EEサーバの再起動後にグローバルセッション情報を引き継いだりすることができます。
なお,SFOサーバ上のグローバルセッション情報は,SFOサーバを再起動したときに破棄されます。
SFOサーバを停止すると,SFOサーバ上のグローバルセッション情報はすべて破棄されます。SFOサーバの停止も,SFOサーバで障害が発生したときと同様に,J2EEサーバ上のHttpSessionオブジェクトに含まれる書き換え可能グローバルセッション情報も削除されるので注意してください。
WebサーバまたはJ2EEサーバで障害が発生したとき,リクエストは,別のJ2EEサーバに転送されます。このとき,グローバルセッション情報の引き継ぎ処理が発生します。WebサーバまたはJ2EEサーバで障害が発生したときの,セッション情報の引き継ぎについて次の図に示します。なお,この図は,HTTPリクエストヘッダのCookieヘッダにグローバルセッションIDがあるが,Cookieヘッダに含まれるJSESSIONIDに対応するHttpSessionオブジェクトがJ2EEサーバにない場合の例です。
図12-11 WebサーバまたはJ2EEサーバの障害発生時のセッション情報の引き継ぎ
SFOサーバに障害が発生している間は,セッションフェイルオーバ機能が無効になり,HTTPセッションによるセッション管理で業務を続けます。このため,SFOサーバに障害が発生している間は,グローバルセッションは生成されません。
SFOサーバの障害発生中に作成されたHttpSessionオブジェクトは,SFOサーバが復旧すると,最初にリクエストが送信された時点で,対応するグローバルセッションが生成され,SFOサーバに格納されます。
SFOサーバに障害が発生すると,J2EEサーバ上にあるHttpSessionオブジェクト内の書き換え可能グローバルセッション情報を削除します。SFOサーバ障害発生時のグローバルセッション情報の削除処理の動作を次の図で説明します。
図12-12 SFOサーバ障害発生時のグローバルセッション情報の削除処理
SFOサーバに障害が発生したときの,グローバルセッションIDの発行,HttpSessionオブジェクトの最大数,およびグローバルセッション情報は次のようになります。
SFOサーバに障害が発生した場合,セッションフェイルオーバ機能は無効になります。このため,HttpSessionオブジェクトが生成されても,グローバルセッションIDは発行されません。なお,SFOサーバが回復すると,最初に実施されるロック処理でグローバルセッションIDが発行されます。ロックが解除されたときにSFOサーバにグローバルセッション情報が格納されます。
SFOサーバに障害が発生した場合,セッションフェイルオーバ機能は無効になります。SFOサーバが停止していると,J2EEサーバでは,SFOサーバで管理できるグローバルセッション情報の最大数を超えて,HTTPセッション数の上限までHttpSessionオブジェクトが生成されます。
SFOサーバが回復すると,リクエスト処理で使用されたセッション情報から順にSFOサーバに格納されます。このとき,SFOサーバに格納できない分のHttpSessionオブジェクトについては,リクエストを受信した時点で破棄され,新規リクエストとして再度生成されて,J2EEアプリケーションに送られます。
SFOサーバに障害が発生したあとのグローバルセッション情報について,種類ごとに説明します。なお,グローバルセッションの種類の概要については,「12.2.3 グローバルセッション情報」を参照してください。
SFOサーバで障害が発生したあとのリクエストは,書き換え可能グローバルセッション情報を削除したHttpSessionオブジェクトで処理を続行します。クライアントへのレスポンスも正常に返ります。
また,セッションフェイルオーバ用フィルタがSFOサーバに対してロック要求をした延長でSFOサーバに障害が発生した場合は,次のように処理されます。
この処理が発生した場合,HttpSessionオブジェクトの属性に次に示すキー名称と値が登録されます。
なお,この属性は,SFOサーバの復旧後,グローバルセッション情報がSFOサーバに格納されると削除されます。また,この属性は,SFOサーバに冗長化されないため,引き継ぎの対象になりません。
SFOサーバに障害が発生したあとでも,Webアプリケーションで作成された新しいHTTPセッションは使用できます。ただし,セッションフェイルオーバ機能は無効になっているため,SFOサーバには格納されません。
なお,SFOサーバ復旧後,SFOサーバに障害が発生しているときに作成されたHTTPセッションは,リクエスト処理で使用されたHTTPセッションから順に,SFOサーバに格納され,セッションフェイルオーバ機能が有効になります。このとき,SFOサーバの障害発生中に登録された書き換え可能グローバルセッション情報や読み込み専用グローバルセッション情報は,そのままSFOサーバに格納されます。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.