Cosminexus システム構築ガイド

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

9.7.2 セッションフェイルオーバ用フィルタの設定

セッションフェイルオーバ用フィルタを有効にするには,次の設定が必要です。

ここでは,セッションフェイルオーバ用フィルタのWebアプリケーションへの組み込みについて説明します。

ポイント
セッション情報の引き継ぎを行うWebアプリケーションを含むJ2EEアプリケーションの開始後にWebアプリケーションの設定を変更する場合,J2EEアプリケーションを再開始する前に,SFOサーバに登録されたWebアプリケーションの設定情報を削除する必要があります。SFOサーバに登録されたWebアプリケーションの設定情報の削除方法については,「6.2.7 Webアプリケーションの設定情報の削除」を参照してください。
<この項の構成>
(1) セッションフェイルオーバ用フィルタのWebアプリケーションへの組み込み
(2) グローバルセッション情報
(3) グローバルセッション情報の最大サイズ
(4) グローバルセッション情報を格納するSFOサーバの名称
(5) グローバルセッションの制御方法
(6) グローバルセッションIDの送信に使用するCookieの名称
(7) グローバルセッションIDの送信に使用するURLのパスパラメタ名
(8) グローバルセッション情報のロック待ちタイムアウト
(9) byte型配列であるセッション情報の引き継ぎ許可
(10) 直列化可能クラスのオブジェクトであるセッション情報の引き継ぎ許可
(11) 属性ファイルの記述例

(1) セッションフェイルオーバ用フィルタのWebアプリケーションへの組み込み

セッション情報の引き継ぎを行うWebアプリケーションへのフィルタの組み込みには,サーバ管理コマンドを使用した属性ファイルの編集による方法と,Server Plug-inを使用する方法と,WebアプリケーションのDD(web.xml)の直接編集による方法の3種類があります。ここでは,サーバ管理コマンドで属性ファイルを編集してフィルタを組み込む方法について説明します。Server Plug-inを使用したフィルタの組み込みについては,マニュアル「Cosminexus アプリケーション設定操作ガイド」を参照してください。また,WebアプリケーションのDD(web.xml)の直接編集によるフィルタの組み込みについては,マニュアル「Cosminexus 機能解説」のセッションフェイルオーバ機能を使用するアプリケーションの実装に関する説明を参照してください。

Webアプリケーションにセッションフェイルオーバ用フィルタを組み込むために,フィルタ属性ファイルおよびWAR属性ファイルに設定する内容を次の表に示します。なお,属性ファイルの取得,編集した属性ファイルの設定の手順については,「9.7.1(2) built-inフィルタの組み込み手順」を参照してください。

表9-14 属性ファイルでの設定内容(セッションフェイルオーバ用フィルタ)

設定項目 属性ファイル名 タグ名 設定内容
フィルタ定義 フィルタ属性ファイル <filter-name>タグ 追加するフィルタ名称を指定します。設定値は,固定値です。

設定値(固定値)
com.hitachi.software.was.sfo.web.SFOFilter
<filter-class>タグ 追加するフィルタのクラス名を指定します。設定値は,固定値です。

設定値(固定値)
com.hitachi.software.was.sfo.web.SFOFilter
セッション情報の引き継ぎの定義 <init-param>タグ内の<param-name>タグおよび<param-value>タグ 初期化パラメタの名称および初期化パラメタの値を指定します。セッション情報の引き継ぎに設定する項目については,表9-15および表9-16を参照してください。
フィルタマッピング定義 WAR属性ファイル <filter-mapping>タグ内の<filter-name>タグ フィルタ名称を指定します。設定値は,固定値です。

設定値(固定値)
com.hitachi.software.was.sfo.web.SFOFilter
<filter-mapping>タグ内の<url-pattern>タグ URLパターンやサーブレットクラスと,セッションフェイルオーバ用フィルタのマッピングを指定します。
セッションフェイルオーバ用フィルタでは,すべてのWebアプリケーションに対してセッションフェイルオーバ用フィルタをマッピングするため,「/*」を指定してください。
設定値は,固定値です。

設定値(固定値)
/*

注※ フィルタマッピングを定義する場合,次の点に注意してください。


セッション情報の引き継ぎに設定する項目と<param-name>タグに指定する初期化パラメタの対応について次の表に指定します。

表9-15 セッション情報の引き継ぎに設定する項目と<param-name>タグに指定する初期化パラメタの対応

設定項目 <param-name>タグに指定する初期化パラメタ <param-value>タグに指定する内容の参照先
グローバルセッション情報 書き換え可能な情報 GSInfoKey-RW 9.7.2(2)
読み取り専用の情報 GSInfoKey-R
グローバルセッション情報の最大サイズ GSInfosLengthMax 9.7.2(3)
グローバルセッション情報を格納するSFOサーバの名称 SFOServerName 9.7.2(4)
グローバルセッションの制御方法 GSessionControl 9.7.2(5)
グローバルセッションIDの送信に使用するCookieの名称 GIDCookieName 9.7.2(6)
グローバルセッションIDの送信に使用するURLのパスパラメタ名 GIDURLParamName 9.7.2(7)
グローバルセッション情報のロック待ちタイムアウト LockTimeout 9.7.2(8)
byte型配列であるセッション情報の引き継ぎ許可 GSInfoTypeByteArrayEnable 9.7.2(9)
直列化可能クラスのオブジェクトであるセッション情報の引き継ぎ許可 GSInfoTypeSerializableEnable 9.7.2(10)

これらのパラメタは,使用する機能によって設定するかどうかが異なります。使用する機能ごとの<param-name>タグに指定する初期化パラメタの設定要否を次の表に示します。

表9-16 使用する機能ごとの<param-name>タグに指定する初期化パラメタの設定要否

<param-name>タグに指定する初期化パラメタ 使用する機能
セッションフェイルオーバ機能の設定要否 グローバルセッション情報のサイズ見積もり機能の設定要否
GSInfoKey-RW 任意※1 任意※1
GSInfoKey-R 任意※1 任意※1
GSInfosLengthMax 任意 無効※2
SFOServerName 任意 無効※3
GSessionControl 任意 任意
GIDCookieName 任意 任意
GIDURLParamName 任意 任意
LockTimeout 任意 無効※2
GSInfoTypeByteArrayEnable 任意 任意
GSInfoTypeSerializableEnable 任意 任意

(凡例)
任意:省略できることを示す。省略した場合はデフォルトの値が設定される。
無効:指定しても無効になることを示す。設定した値は使用されない。

注※1 GSInfoKey-RWとGSInfoKey-Rの両方を省略することはできません。

注※2 パラメタに不正な値を指定した場合はエラーとなり,Webアプリケーションは開始できません。

注※3 指定したSFOサーバ名が,簡易構築定義ファイルで指定されているSFOフィルタのサーバ定義名にない場合もエラーになりません。SFOフィルタのサーバ定義名は,簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内に,webserver.sfo.sfo_serversパラメタで指定します。


注意
セッション情報の引き継ぎに関する設定を変更するときは,フィルタ属性ファイルの<init-param>タグ内にある<param-name>タグおよび<param-value>タグを編集します。なお,タグの指定を省略する場合,タグの記述も含めて省略する必要があります(<init-param>タグ〜</init-param>タグの記述を省略します)。次のようにタグを記述して値だけ省略した場合,空白文字列が指定されたと判断してエラーとなります。

間違った省略方法の例
 
   (省略)
    :
<init-param>
<param-name>LockTimeout</param-name>
<param-value></param-value>
</init-param>
    :
   (省略)
 

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

HTTPセッションに登録されるセッション情報の中から,グローバルセッション情報として,SFOサーバに引き継ぐセッション情報を選択します。また,グローバルセッション情報には,書き換え可能な情報と読み取り専用の情報の2種類があるため,グローバルセッション情報の種別を指定します。

グローバルセッション情報の設定に使用する初期化パラメタは,GSInfoKey-RWパラメタ(書き換え可能な場合)またはGSInfoKey-Rパラメタ(読み取り専用の場合)です。GSInfoKey-RWパラメタおよびGSInfoKey-Rパラメタには同じ値を指定しないでください。同じ値を指定した場合,Webアプリケーションの開始時にエラーとなり,Webアプリケーションは開始できません。また,GSInfoKey-RWパラメタおよびGSInfoKey-Rパラメタの両方を省略することはできません。

グローバルセッション情報として指定できるセッション情報と,セッション情報のデータ型,グローバルセッション情報の種別について説明します。なお,統合ユーザ管理機能を使用する場合には,セッション情報の種別,およびパラメタの設定値が決まっています。詳細については,「(d) 統合ユーザ管理機能を使用する場合のグローバルセッション情報」を参照してください。

(a) グローバルセッション情報として指定できるセッション情報

HTTPセッションに登録されるセッション情報の中から,グローバルセッション情報として,SFOサーバに引き継ぐセッション情報を選択します。

グローバルセッション情報として指定できるセッション情報は,HTTPセッションに登録された一部,またはすべてです。HTTPセッションに登録される一部のセッション情報をグローバルセッション情報として指定する場合は,GSInfoKey-RWパラメタまたはGSInfoKey-Rパラメタで,SFOサーバに引き継ぐセッション情報のキー名称を指定します。HTTPセッションに登録されるすべてのセッション情報をグローバルセッション情報として指定する場合は,GSInfoKey-RWパラメタまたはGSInfoKey-Rパラメタで,*(半角アスタリスク)を指定します。

グローバルセッション情報を選択するときの留意事項を次に示します。

(b) グローバルセッション情報として指定できるセッション情報のデータ型

グローバルセッション情報として指定できるセッション情報には,次のデータ型が指定できます。

データ型にjava.lang.Stringクラスのオブジェクト以外を指定する場合は,どのデータ型のセッション情報に対して引き継ぎを許可するかを,GSInfoTypeByteArrayEnableパラメタまたはGSInfoTypeSerializableEnableパラメタで設定します。

グローバルセッション情報として,指定したデータ型以外のオブジェクトがHTTPセッションに登録されると,SFOサーバへのセッション情報の引き継ぎでエラーが発生し,セッション情報は保持されません。引き継ぎ対象外のオブジェクトがHTTPセッションに登録された場合の,引き継ぎ対象外のオブジェクトの扱いについては,マニュアル「Cosminexus 機能解説」を参照してください。

グローバルセッション情報のデータ型を指定するときの留意事項を次に示します。

(c) グローバルセッション情報の種別

グローバルセッション情報として選択したセッション情報を書き換え可能な情報とするか,または読み取り専用の情報とするか,どちらかを選択します。

なお,複数のグローバルセッション情報を選択した場合,それぞれのグローバルセッション情報に対して種別を指定してください。

グローバルセッション情報の種別の選択基準を次に示します。

(d) 統合ユーザ管理機能を使用する場合のグローバルセッション情報

統合ユーザ管理機能を使用する場合のセッション情報は,HTTPセッションに登録したあと変更が必要になるため,書き換え可能なグローバルセッション情報(GSInfoKey-RWパラメタ)を選択してください。また,GSInfoKey-RWパラメタには,「com.cosminexus.admin.auth.user_data」を設定してください。

(3) グローバルセッション情報の最大サイズ

SFOサーバに格納するグローバルセッション情報の一つ当たりの最大サイズを指定します。SFOサーバで冗長化できるグローバルセッション情報のサイズは,デフォルトでは1,024バイトまでです。冗長化するグローバルセッション情報の文字数がこの値を超える場合は,設定を変更する必要があります。グローバルセッション情報の最大サイズの設定に使用する初期化パラメタは,GSInfosLengthMaxパラメタです。

なお,グローバルセッション情報の最大サイズを小さくすることにより,SFOサーバのメモリの消費量を削減できます。ご使用の環境に応じて,グローバルセッション情報の最大サイズに適切な値を設定してください。

グローバルセッション情報の最大サイズの見積もり式は,統合ユーザ管理機能を使用する場合と使用しない場合とで異なります。それぞれの場合の見積もり式について説明します。

(a) 統合ユーザ管理機能を使用しない場合

統合ユーザ管理機能を使用しない場合のグローバルセッション情報の最大サイズの見積もり式を次に示します。直列化可能クラスのオブジェクトであるセッション情報の引き継ぎを許可しているかどうか(GSInfoTypeSerializableEnableパラメタの指定)によって,見積もり式が異なります。

(b) 統合ユーザ管理機能を使用する場合

統合ユーザ管理機能を使用する場合のグローバルセッション情報の最大サイズの見積もり式を次に示します。

 
グローバルセッション情報の最大サイズ
     =統合ユーザ管理で使用する値
     +ユーザアプリケーションで使用する値

統合ユーザ管理で使用する値は,統合ユーザ管理フレームワークのAPIを使用する場合とタグライブラリを使用する場合で異なります。また,パスワード保存機能を使用するかどうかによっても異なります。それぞれの場合の統合ユーザ管理で使用する値の計算式を次に示します。

 

ポイント
計算式中の1,500と1,200は固定値です。統合ユーザ管理の管理情報を保存するために必要な値です。なお,この値はオブジェクトをシリアライズしたときのバイト数の最大値を基に算出しています。
注意
セッションフェイルオーバ用フィルタの設定に誤りがある場合,セッションフェイルオーバが正しく行われませんので注意してください。
統合ユーザ管理では,GIDCookieNameパラメタが示す値が取得できたときに統合ユーザ管理でのセッションフェイルオーバ機能を有効にしますが,統合ユーザ管理からはセッションフェイルオーバ用フィルタの内容が正しいかチェックできません。このため,フィルタの設定に誤りがあった場合,実際にフェイルオーバが発生するまで誤りに気づかないおそれがあります。

(4) グローバルセッション情報を格納するSFOサーバの名称

グローバルセッション情報を格納するSFOサーバの名称を指定します。SFOサーバの名称の設定に使用する初期化パラメタは,SFOServerNameパラメタです。

グローバルセッション情報を格納するSFOサーバは,Webアプリケーションが配置されているJ2EEサーバのグローバルセッション情報を格納するSFOサーバから選択します。

J2EEサーバのグローバルセッション情報を格納するSFOサーバは,Smart Composer機能の簡易構築定義ファイルのsfo-tierで定義します。グローバルセッション情報を格納するSFOサーバの設定については,「6.2.3 セッション情報の引き継ぎを行うJ2EEサーバの設定」を参照してください。

ポイント
システム内に複数のSFOサーバを配置する場合,セッションフェイルオーバ機能を使用するWebアプリケーション単位に,SFOサーバを割り当てることをお勧めします。Webアプリケーション単位にSFOサーバを割り当てることにより,SFOサーバでの障害発生時の影響範囲を特定のJ2EEアプリケーションに限定させることができます。システム内に複数のSFOサーバを配置する場合の設定例を次の図に示します。

図9-15 システム内に複数のSFOサーバを配置する場合の設定例

[図データ]
 

(5) グローバルセッションの制御方法

グローバルセッションの制御方法を指定します。グローバルセッションの制御方法の設定に使用する初期化パラメタは,GSessionControlパラメタです。

GSessionControlパラメタに指定した値に応じて,Webクライアントに対するグローバルセッションIDの送信方法,およびWebクライアントからのグローバルセッションIDの受信方法が決まります。

GSessionControlパラメタに指定できる値と意味を次の表に示します。

表9-18 GsessionControlパラメタの指定値と意味

指定値 意味
cookie グローバルセッション情報の制御にHTTP Cookieを使用します。
url-rewriting グローバルセッション情報の制御にURL書き換えを使用します。
both グローバルセッション情報の制御にHTTP CookieおよびURL書き換えの両方を使用します。
WebクライアントがHTTP Cookieをサポートしているかどうかを判別して,必要に応じてHTTP Cookieによる制御とURL書き換えによる制御を切り替えます。
注意
Smart Composer機能で構築する,セッションフェイルオーバ機能を使用したシステムでは,HTTP Cookieによるグローバルセッション情報の制御に対応していますが,URL書き換えによるグローバルセッション情報の制御には対応していません。グローバルセッション情報の制御にURL書き換えを使用するシステムは,運用管理ポータル,またはファイル編集とコマンド実行で構築してください。運用管理ポータルの場合は,マニュアル「Cosminexus 運用管理操作ガイド」を,ファイル編集とコマンド実行の場合は,マニュアル「Cosminexus リファレンス 定義編」およびマニュアル「Cosminexus リファレンス コマンド編」を参照してください。

(6) グローバルセッションIDの送信に使用するCookieの名称

HTTP Cookieを使用してグローバルセッションを制御している場合,グローバルセッションIDは,HTTPレスポンスヘッダのSet-Cookieヘッダに設定されて,Webクライアント(ブラウザなど)に送信されます。

グローバルセッションIDを設定するCookieに任意の名称を指定します。Cookieの名称の設定に使用する初期化パラメタは,GIDCookieNameパラメタです。

Cookieの名称は,Webアプリケーション単位に指定できます。ただし,次に示すCookieの名称と同じ値を指定することはできません。

なお,グローバルセッションIDの送信に使用するCookieの名称が,上記のCookieの名称と重複した場合,Webアプリケーションに定義したセッションフェイルオーバ用フィルタ(J2EE仕様で規定されたjavax.servlet.Filterインタフェースを実装したクラス)の開始処理でエラーとなり,Webアプリケーションを実行できません。

(7) グローバルセッションIDの送信に使用するURLのパスパラメタ名

グローバルセッションIDの送信に使用するURLのパスパラメタ名を指定します。URLのパスパラメタ名の設定に使用する初期化パラメタは,GIDURLParamNameパラメタです。

GSessionControlパラメタに「cookie」を指定した場合,GIDURLParamNameパラメタに設定した値は無効になります。なお,GSessionControlパラメタに「cookie」を指定した場合,GIDURLParamNameパラメタに設定した値はチェックされません。このため,GIDURLParamNameパラメタに不正な値を設定した場合も,検出はされません。

注意
Webアプリケーション内で使用するURLのパスパラメタと同じ名称を,GIDURLParamNameパラメタで指定しないでください。指定した場合,セッションフェイルオーバ機能が正しく動作しません。

(8) グローバルセッション情報のロック待ちタイムアウト

すでにロックされた状態のセッションに対して,別のJ2EEサーバからロック要求があった場合に,ロック解除待ちがタイムアウトになるまでの時間を設定します。グローバルセッション情報のロック待ちタイムアウトの設定に使用する初期化パラメタは,LockTimeoutパラメタです。

J2EEサーバからSFOサーバに対してグローバルセッション情報のロック取得要求をしたあとでJ2EEサーバに障害が発生して停止した場合,SFOサーバ上のグローバルセッション情報がロックされたままの状態になってしまうおそれがあります。グローバルセッション情報のロック待ちタイムアウト時間は,このような場合に,J2EEサーバに障害が発生したと判断するために使用される時間です。このタイムアウト時間を超えると,SFOサーバ上のロックは解除されます。

また,次のような場合にロックされたままの状態になったときにも,このタイムアウト時間が有効になります。これらの状態は,負荷分散機を利用している環境で発生することがあります。

なお,クライアントから同時に実行されることが想定されるWebアプリケーションがある場合,その処理に要する時間を考慮して,グローバルセッション情報のロック待ちタイムアウト時間を指定してください。

(9) byte型配列であるセッション情報の引き継ぎ許可

byte型配列であるセッション情報を引き継ぎ対象とするかどうかを指定します。

GSInfoTypeByteArrayEnableパラメタにtrueを指定した場合には,byte型配列のセッション情報は引き継ぎ対象となります。

GSInfoTypeByteArrayEnableパラメタにfalseを指定した場合には,byte型配列のセッション情報は引き継ぎ対象となりません。このため,byte型配列のセッション情報の場合は,グローバルセッション情報の更新時にエラーとなります。

(10) 直列化可能クラスのオブジェクトであるセッション情報の引き継ぎ許可

直列化可能クラスのオブジェクトであるセッション情報を引き継ぎ対象とするかどうかを指定します。

GSInfoTypeSerializableEnableパラメタにtrueを指定した場合には,直列化可能クラスのオブジェクトであるセッション情報は引き継ぎ対象となります。

GSInfoTypeSerializableEnableパラメタにfalseを指定した場合には,直列化可能クラスのオブジェクトであるセッション情報は引き継ぎ対象となりません。

(11) 属性ファイルの記述例

属性ファイルの記述例を示します。

(a) 統合ユーザ管理機能を使用しない場合

統合ユーザ管理機能を使用しない場合の属性ファイルの記述例を次に示します。この例は,HTTP Cookieを使用してグローバルセッションを制御し,byte型配列のセッション情報を引き継ぐ場合の例です。

この記述例で設定される内容は,次のとおりです。

(b) 統合ユーザ管理機能を使用する場合

統合ユーザ管理機能を使用する場合の属性ファイルの記述例を次に示します。この例は,HTTP Cookieを使用してグローバルセッションを制御している場合の例です。

この記述例で設定される内容は,次のとおりです。