Cosminexus 機能解説

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

12.7.4 DDの定義

次に示すディレクトリに,セッションフェイルオーバ機能で使用するフィルタ定義およびフィルタマッピングの定義が記述されたテンプレートのDD(web.xml)が用意してあります。

テンプレート格納ディレクトリ
<Cosminexusのインストールディレクトリ>\CC\sfo\sfo_war

このファイルをコピーしてWebアプリケーションのDDを作成します。すでに存在するWebアプリケーションにセッションフェイルオーバ機能を適用する場合,テンプレートからDDにセッションフェイルオーバ用フィルタのフィルタ定義およびフィルタマッピングの定義をコピーし,必要な定義を記述します。

テンプレートの内容を次に示します。

図12-32 テンプレートの内容(セッションフェイルオーバ機能のDD)(1/2)

[図データ]

図12-33 テンプレートの内容(セッションフェイルオーバ機能のDD)(2/2)

[図データ]

次の定義の値は固定となります。テンプレートの値をそのまま使用してください。

<この項の構成>
(1) DDに定義する項目
(2) グローバルセッション情報として使用する情報(GSInfoKey-RW,GSInfoKey-R)
(3) グローバルセッション情報の最大サイズ(GSInfosLengthMax)
(4) グローバルセッション情報を格納するSFOサーバ(SFOServerName)
(5) グローバルセッションの制御方法(GSessionControl)
(6) グローバルセッションIDの送信に使用するHTTP Cookieの名称(GIDCookieName)
(7) グローバルセッションIDの送信に使用するURLのパスパラメタ名(GIDURLParamName)
(8) グローバルセッション情報のロック待ちタイムアウト時間(LockTimeout)
(9) 引き継ぎ可能なセッション情報のデータ型(GSInfoTypeByteArrayEnable,GSInfoTypeSerializableEnable)
(10) DDの定義例(HTTP Cookieによる制御の場合)
(11) DDの定義例(URL書き換えによる制御の場合)
(12) DDの定義例(制御方法にbothを指定する場合)

(1) DDに定義する項目

グローバルセッション情報として登録する情報や,使用するSFOサーバの情報などは,<filter>タグ内の初期化パラメタである,<init-param>タグ内を編集して定義します。

参考
<init-param>タグ内の情報は,アプリケーションをJ2EEサーバにインポートしたあとで,サーバ管理コマンドを使用して設定することもできます。

DDの<init-param>タグ内に定義する内容を次の表に示します。なお,<param-value>に指定する値の詳細については,(2)以降で説明します。

表12-11 DDの<init-param>タグ内に定義する内容

定義する項目 <param-name>タグに指定する要素 <param-value>に指定する内容
グローバルセッション情報として使用する情報 書き換え可能な情報 GSInfoKey-RW HTTPセッションに登録する情報の中から,グローバルセッション情報として登録する情報を選択して定義します。
文字列を指定します。※1
「;」(半角セミコロン)を含んだキーは指定できません。
複数指定する場合は,「;」(半角セミコロン)で区切って指定します。
なお,同じ名称のキーは複数回指定できません。GSInfoKey-RWとGSInfoKey-Rに同じ名称を指定することもできません。※2
また,「*」(半角アスタリスク)だけを指定すると,HTTPセッションに登録されたすべての情報がグローバルセッション情報として登録されます。ただし,複数指定の中に「*」を指定している場合,「*」はキーとして扱われます。「*」は,GSInfoKey-RWとGSInfoKey-Rの両方に指定できません。
GSInfoKey-RWとGSInfoKey-Rに指定する値と引き継ぎ対象となるセッション情報の関係については,「(2) グローバルセッション情報として使用する情報(GSInfoKey-RW,GSInfoKey-R)」を参照してください。
読み込み専用の情報 GSInfoKey-R
グローバルセッション情報の最大サイズ GSInfosLengthMax グローバルセッション情報の最大サイズ(文字)を指定します。
DDには,3〜1048576の整数値で指定します。
グローバルセッション情報を格納するSFOサーバ SFOServerName 使用するSFOサーバ名を指定します。
DDには,J2EEサーバ用のusrconf.propertiesのwebserver.sfo.sfo_serversキーで指定されているSFOサーバの中から選択して指定します。
グローバルセッションの制御方法 GSessionControl グローバルセッション情報の制御方法を指定します。
指定できる値は,「cookie」,「url-rewriting」または「both」です。
このパラメタに指定した値については,大文字と小文字が区別して扱われます。
グローバルセッションIDの送信に使用するHTTP Cookieの名称 GIDCookieName グローバルセッションIDを送信するHTTP Cookieの名称を指定します。
DDには,16文字までの文字列で指定します。
使用できる文字は,A〜Z,a〜zおよび0〜9の英数字です。ただし,HTTP Cookieの名称の識別では,大文字と小文字は区別されません。
また,HTTPセッションのセッションIDが使用する「JSESSIONID」やJ2EEサーバが使用するサーバIDと同じ値は指定できません。
グローバルセッションIDの送信に使用するURLのパスパラメタ名 GIDURLParamName グローバルセッションIDの送信に使用するURLのパスパラメタ名を指定します。
DDには,16文字までの文字列で指定します。
使用できる文字は,A〜Z,a〜zおよび0〜9の英数字です。URLのパスパラメタの識別では,大文字と小文字は区別されます。
また,URLのパスパラメタ名には,「jsessionid」を指定できません。「jsessionid」は,HTTPセッションのセッションIDの送信に使用する文字列です。なお,「jsessionid」の識別では,大文字と小文字は区別されません。
また,Webアプリケーションで独自のURLのパスパラメタを使用している場合は,Webアプリケーションで使用しているURLのパスパラメタと異なる名称をこのパラメタに,指定してください。
グローバルセッション情報のロック待ちタイムアウト時間 LockTimeout SFOサーバでのロック待ちタイムアウト時間を秒単位で指定します。
DDには,1〜3600の整数値を指定します。
引き継ぎ可能なセッション情報のデータ型 byte型配列であるセッション情報の引き継ぎ許可 GSInfoTypeByteArrayEnable byte型配列のセッション情報を引き継ぎ対象とするかどうかを指定します。

true
byte型配列のセッション情報を引き継ぎ対象とします。

false
byte型配列のセッション情報を引き継ぎ対象としません。byte型配列を使用した場合は,グローバルセッション情報の更新時にエラーとなります。
trueおよびfalse以外の文字列を指定した場合は,デフォルト値のfalseが適用されます。
このパラメタに指定した値について,大文字,小文字は区別されません。また,このパラメタに指定した値は,GSInfoTypeSerializableEnableパラメタに「true」を指定している場合は無視されます。
直列化可能クラスのオブジェクトであるセッション情報の引き継ぎ許可 GSInfoTypeSerializableEnable 直列化可能クラスのオブジェクトであるセッション情報を引き継ぎ対象とするかどうかを指定します。

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

false
直列化可能クラスのオブジェクトであるセッション情報を引き継ぎ対象としません。
このパラメタに指定した値について,大文字,小文字は区別されません。

注※1 キー名称の先頭と最後の空白は省略されます。省略された結果,""(文字列)になったキー名称は無視されます。

注※2 同じキー名称を指定した場合,Webアプリケーションを開始できません。


これらの定義項目は,使用する機能によって設定するかどうかが異なります。使用する機能ごとのDDの<init-param>タグ内に定義する要素のデフォルト値と設定要否を次の表に示します。

表12-12 使用する機能ごとのDDの<init-param>タグ内に定義する要素のデフォルト値と設定要否

<param-name>タグに指定する要素 デフォルト値 使用する機能
セッションフェイルオーバ機能の設定要否 グローバルセッション情報のサイズ見積もり機能の設定要否
GSInfoKey-RW なし 任意※1 任意※1
GSInfoKey-R なし 任意※1 任意※1
GSInfosLengthMax 1024 任意 無効※2
SFOServerName webserver.sfo.sfo_serversキーに指定されているSFOサーバ数によって異なります。※3 任意 無効※4
GSessionControl cookie 任意 任意
GIDCookieName GSESSIONID 任意 任意
GIDURLParamName gsessionid 任意 任意
LockTimeout 60 任意 無効※2
GSInfoTypeByteArrayEnable false 任意 任意
GSInfoTypeSerializableEnable false 任意 任意

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

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

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

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

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


なお,グローバルセッションの制御方法によって,指定する必要があるパラメタが異なります。

グローバルセッションの制御方法と指定が必要なパラメタの対応を次の表に示します。

表12-13 グローバルセッションの制御方法と指定が必要なパラメタの対応

<param-name>タグに指定する要(パラメタ) HTTP Cookieによって制御する場合 URL書き換えによって制御する場合
GSInfoKey-RW
GSInfoKey-R
GSInfosLengthMax
SFOServerName
GSessionControl
GIDCookieName
GIDURLParamName
LockTimeout
GSInfoTypeByteArrayEnable
GSInfoTypeSerializableEnable

(凡例)
◎:指定が必要です。省略できません。
○:指定が必要です。省略した場合は,デフォルト値が有効になります。
−:指定は不要です。

注※
デフォルト値は「cookie」です。このため,省略した場合もHTTP Cookieによってグローバルセッションが制御されます。

注意
  • グローバルセッション情報として使用する情報は,一つ以上指定する必要があります。それ以外の値の定義は任意です。デフォルト値がある項目については,省略するとデフォルト値が使用されます。
  • パラメタ値を省略する場合,<init-param>タグごと省略してください。次のようにタグを残して値だけを省略した場合,空文字列を指定したと判断されて,エラーになります。
    間違った省略方法の例
        :
    <init-param>
    <param-name>GSInfosLengthMax</param-name>
    <param-value></param-value>
    </init-param>
        :

セッションフェイルオーバ機能を使用するためのDDの定義内容は,冗長化したJ2EEサーバにデプロイした同一アプリケーションで同じ必要があります。定義内容が不正な場合,アプリケーション開始処理がエラーになります。メッセージは,KDJE34202-Eのメッセージが出力されます。

(2) グローバルセッション情報として使用する情報(GSInfoKey-RW,GSInfoKey-R)

HTTPセッションに登録する情報の中から,グローバルセッション情報として登録する情報を選択して定義します。HTTPセッションに登録する情報すべてをグローバルセッション情報として引き継ぐ場合は,「*」を指定します。

グローバルセッション情報は,書き換え可能グローバルセッション情報または読み込み専用グローバルセッション情報として指定します。HTTPセッションに登録後,変更が必要なセッション情報は,書き換え可能グローバルセッション情報に指定します。HTTPセッションに登録後,変更が不要なセッション情報は,読み込み専用グローバルセッションに指定します。グローバルセッション情報については,「12.2.3 グローバルセッション情報」を参照してください。

書き換え可能グローバルセッション情報の場合は,パラメタのGSInfoKey-RWで指定します。読み込み専用グローバルセッション情報の場合は,GSInfoKey-Rで指定します。

GSInfoKey-RWおよびGSInfoKey-Rパラメタに指定した文字列は,「;」(半角セミコロン)で分割したあと,それぞれの値の先頭と最後の連続した空白文字を削除した結果がキー名称として使用されます。空白文字を削除した結果が「""」(空文字列)になったキー名称は無視されます。GSInfoKey-RWおよびGSInfoKey-Rパラメタに指定した文字列に有効となるキー名称がない場合は,KDJE34202-Eのメッセージが出力され,エラーとなります。

注※ 空白文字とは,半角スペース,タブ,LF(ラインフィード(0x0a)),CR(キャリッジリターン(0x0d))またはFF(フォームフィード(0x0c))のことを指します。

GSInfoKey-RWおよびGSInfoKey-Rパラメタに指定する値と引き継ぎ対象となるセッション情報の関係を次の表に示します。

表12-14 GSInfoKey-RWおよびGSInfoKey-Rパラメタに指定する値と引き継ぎ対象となるセッション情報の関係

項番 パラメタに指定する値 指定例 指定例で引き継ぎ対象となるセッション情報
1 「;」(半角セミコロン)で区切った複数の文字列 "user;roll" "user"および"roll"のキーで登録されたセッション情報
2 キーの前,またはあとに空白を含んだ文字列 "user△;△roll△△; password" "user","roll",および"password"のキーで登録されたセッション情報(空白文字を削除した結果,キー名称となります)
3 キーの途中に空白を含んだ文字列 "user;user△id" "user"および"user△id"のキーで登録されたセッション情報
4 「*」(半角アスタリスク)だけ "*" HTTPセッションに登録されたすべてのセッション情報
5 前,またはあとに空白を含んだ「*」(半角アスタリスク) "△△*△△" HTTPセッションに登録されたすべてのセッション情報(空白文字を削除した結果,「*」となります)
6 「*」(半角アスタリスク)を含んだ複数の文字列 "user;*" "user"および"*"のキーで登録されたセッション情報
7 「*」(半角アスタリスク)以外のキーが空文字列 "*;" "*"のキーで登録されたセッション情報
8 空文字列 "" エラーとなり,KDJE34202-Eのメッセージが出力されます。
9 「△」だけ "△△" エラーとなり,KDJE34202-Eのメッセージが出力されます(空白文字を削除した結果,空文字列となります)。
10 「;」(半角セミコロン)だけ ";;" エラーとなり,KDJE34202-Eのメッセージが出力されます(有効となるキー名称がありません)。
11 「△」を「;」(半角セミコロン)で区切った文字列 ";△;" エラーとなり,KDJE34202-Eのメッセージが出力されます(空白文字を削除した結果,有効となるキー名称がありません)。

(凡例)△:空白文字を示します。

注※ GSInfoKey-RWパラメタで「*」を指定している場合に,GSInfoKey-Rパラメタでキーを指定しているときは,GSInfoKey-Rパラメタに指定したキーで登録されたセッション情報は含まれません。また,GSInfoKey-Rパラメタで「*」を指定している場合に,GSInfoKey-RWパラメタでキーを指定しているときは,GSInfoKey-RWパラメタに指定したキーで登録されたセッション情報は含まれません。

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

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

また,グローバルセッション情報の最大サイズを小さくすると,SFOサーバで使用するメモリサイズを少なくできます。実際に格納するグローバルセッション情報の最大サイズを考慮して,適切なサイズを指定してください。

注意
グローバルセッション情報のサイズ見積もり機能を有効にしている場合,GSInfosLengthMaxパラメタの指定は無視されます。このため,グローバルセッション情報のサイズ見積もり機能を無効にして運用を開始する前に,KDJE34260-Iのメッセージで出力されたグローバルセッション情報のサイズが,GSInfosLengthMaxパラメタで指定したサイズを超えていないことを確認してください。

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

(a) 直列化可能クラスのオブジェクトであるセッション情報の引き継ぎを許可していない場合

グローバルセッション情報のサイズ=
 (各グローバルセッション情報のキーの文字列長合計)
 +(各HTTPセッションに登録されたオブジェクトのサイズの最大長合計)
 +(区切り文字数)※1
 +(HTTPセッションの有効期間情報の長さ)※2

注※1
区切り文字数は,2×(設定したグローバルセッション情報の数)−1で算出できます。これは,区切り文字には,グローバルセッション情報間の区切り文字と,各グローバルセッション情報のキーと値の区切り文字が含まれるためです。

注※2
HTTPセッションの有効期間情報の長さは4バイトです。

ただし,グローバルセッション情報がjava.lang.Stringクラスの場合,文字列をUTF-8の文字エンコーディングでURLエンコードして冗長化します(URLエンコードにはjava.net.URLEncoderクラスを使用します)。そのため,グローバルセッション情報の文字列長は,セッション情報の文字列長と異なることがあります。文字種ごとのURLエンコード後の文字列長を次の表に示します。

表12-15 文字種ごとのURLエンコード後の文字列長

項番 文字種 文字列長(バイト)
1 ASCII文字 英数字(0〜9およびa〜Z)および次に示す特殊文字
  • ピリオド(.)
  • ハイフン(-)
  • アスタリスク(*)
  • アンダースコア(_)
1
上記以外のASCII文字 3
2 JIS X 0201のすべての非ASCII文字 6または9
3 JIS X 0208のすべての非ASCII文字 6または9
4 JIS X 0212のすべての非ASCII文字 6または9
5 Windows-31Jの拡張文字 9
6 Unicodeの補助文字(基本多言語面以外の文字) 12
7 JIS X 0213の第3,第4水準漢字 9または12

このため,グローバルセッション情報のサイズは,セッション情報の文字列を文字種ごとにURLエンコード後の文字列長に変換してから,それらを合計して見積もる必要があります。

例えば,n種類のグローバルセッション情報を指定した場合は,グローバルセッション情報の最大サイズは次の式で算出できます。

 
グローバルセッション情報のサイズ=
 (グローバルセッション情報1のキーの文字列長)
 +(HTTPセッションに登録されたオブジェクト1の最大サイズ)
 +(グローバルセッション情報2のキーの文字列長)
 +(HTTPセッションに登録されたオブジェクト2の最大サイズ)
  :
 +(グローバルセッション情報nのキーの文字列長)
 +(HTTPセッションに登録されたオブジェクトnの最大サイズ)
 +(2×n-1)
 +4
 
参考
グローバルセッション情報のサイズ見積もり機能を使用すると,HTTPセッションに含まれるセッション情報ごとのバイト数が出力できます。出力されたサイズ情報を参考にして,グローバルセッション情報の最大サイズに適切な値を設定してください。グローバルセッション情報のサイズ見積もり機能については,「12.2.10 グローバルセッション情報のサイズの見積もり」を参照してください。
(b) 直列化可能クラスのオブジェクトであるセッション情報の引き継ぎを許可している場合
 
グローバルセッション情報のサイズ=
 (各グローバルセッション情報のキーのシリアライズ後のバイト数合計)
 +(各HTTPセッションに登録されたオブジェクトのシリアライズ後のバイト数合計)
 +(HTTPセッションの有効期間情報の長さ)

シリアライズは,一つのHTTPセッションに対して,一つのjava.io.ObjectOutputStreamのオブジェクトを使用して実施します。

注※
HTTPセッションの有効期間情報の長さは4バイトです。

例えば,n種類のグローバルセッション情報を設定した場合は,グローバルセッション情報の最大サイズは次の式で算出できます。

 
グローバルセッション情報のサイズ=
 (グローバルセッション情報1のキーのシリアライズ後のバイト数)
 +(HTTPセッションに登録されたオブジェクト1のシリアライズ後のバイト数)
 +(グローバルセッション情報2のキーのシリアライズ後のバイト数)
 +(HTTPセッションに登録されたオブジェクト2のシリアライズ後のバイト数)
 :
 +(グローバルセッション情報nのキーのシリアライズ後のバイト数)
 +(HTTPセッションに登録されたオブジェクトnのシリアライズ後のバイト数)
 +4
 

シリアライズは,一つのHTTPセッションに対して,一つのjava.io.ObjectOutputStreamのオブジェクトを使用して実施します。

参考
グローバルセッション情報のサイズ見積もり機能を使用すると,各情報のシリアライズ後のバイト数が出力できます。出力されたサイズ情報を参考にして,グローバルセッション情報の最大サイズに適切な値を設定してください。グローバルセッション情報のサイズ見積もり機能については,「12.2.10 グローバルセッション情報のサイズの見積もり」を参照してください。

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

グローバルセッション情報を格納するSFOサーバのサーバ名を指定します。サーバ名は,J2EEサーバのusrconf.propertiesのwebserver.sfo.sfo_serversキーに指定したSFOサーバ名から選択します。

usrconf.propertiesについては,マニュアル「Cosminexus リファレンス 定義編」を参照してください。

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

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

指定できる値と意味を次の表に示します。

表12-16 GSessionControlの指定値の意味

指定値 意味
cookie グローバルセッションの制御にHTTP Cookieを使用します。
url-rewriting グローバルセッションの制御にURL書き換えを使用します。
both グローバルセッションの制御にHTTP CookieおよびURL書き換えの両方を使用します。
WebクライアントがHTTP Cookieをサポートしているかどうかを判別して,必要に応じてHTTP Cookieによる制御とURL書き換えによる制御を切り替えます。

また,GSessionControlに指定した値によって,次の制御が変わります。

GSessionControlに指定する値とグローバルセッションの制御方法の関係を,次の表に示します。

表12-17 GSessionControlに指定する値とグローバルセッションの制御方法の関係

GSessionControlに指定する値 WebクライアントからJ2EEサーバに送信されるリクエストに含まれるグローバルセッションID J2EEサーバからWebクライアントに送信されるレスポンスの内容
HTTP Cookieに含まれるグローバルセッションID URLのパスパラメタに含まれるグローバルセッションID グローバルセッション生成時にHTTP Cookieを付加するかどうか ServletAPIによるURL書き換えが有効になるかどうか
cookie 有効 無効 付加する 無効
url-rewriting 無効 有効 付加しない 有効
both 有効1 有効1 付加する 有効2

注※1
クライアントから送信されたリクエストが,HTTP CookieおよびURLのパスパラメタの両方にグローバルセッションIDを含んでいる場合は,HTTP Cookieで送信されたグローバルセッションIDが有効になります。

注※2
WebクライアントがHTTP Cookieをサポートしている場合は,URL書き換えは実行しません。

HTTP CookieまたはURL書き換えを使用したグローバルセッションの制御については,「12.3 HTTP Cookieによるグローバルセッションの制御」および「12.4 URL書き換えによるグローバルセッションの制御」を参照してください。

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

グローバルセッションIDをWebブラウザなどのクライアントに通知するときに使用するHTTP Cookieの名称を指定します。なお,グローバルセッションIDとは,グローバルセッション情報の識別に使用される情報です。

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

グローバルセッションIDをWebブラウザなどのクライアントに通知するときに使用するURLのパスパラメタ名を指定します。

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

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

URL書き換えを使用したグローバルセッションの制御については,「12.4 URL書き換えによるグローバルセッションの制御」を参照してください。

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

すでにロックされた状態のセッションに対して,別のJ2EEサーバからロック要求があった場合に,ロック待ちがタイムアウトになるまでの時間を指定します。

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

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

フレームを使用するアプリケーションの場合は,リクエスト処理が終わるまでのロック待ち時間も考慮して,タイムアウト時間を定義してください。

(9) 引き継ぎ可能なセッション情報のデータ型(GSInfoTypeByteArrayEnable,GSInfoTypeSerializableEnable)

引き継ぎ可能なセッション情報のデータ型には,java.lang.Stringクラスのオブジェクト,byte型配列,および直列化可能クラスのオブジェクトがあります。

データ型がbyte型配列,または直列化可能クラスのオブジェクトであるセッション情報を引き継ぎ対象とする場合には,次の設定を有効にします。

これらの設定を無効にした場合は,java.lang.Stringクラスのオブジェクトだけが引き継ぎ可能なセッション情報となります。

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

byte型配列のセッション情報を引き継ぎ対象とするかどうかをGSInfoTypeByteArrayEnableパラメタに指定します。「true」を指定した場合は,java.lang.Stringクラスのオブジェクトに加え,byte型配列のセッション情報も引き継ぎ対象となります。

「false」を指定した場合は,byte型配列のセッション情報は引き継ぎ対象外となります。引き継ぎ対象外のオブジェクトが登録された場合の扱いについては,「12.2.3(3) 引き継ぎ対象外のオブジェクトの扱い」を参照してください。

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

直列化可能クラスのオブジェクトであるセッション情報を引き継ぎ対象とするかどうかをGSInfoTypeSerializableEnableパラメタに指定します。「true」を指定した場合は,直列化可能クラスのオブジェクトであるセッション情報が引き継ぎ対象となります。この場合,java.lang.Stringクラスのオブジェクト,およびbyte型配列のセッション情報も区別なく,直列化可能クラスのオブジェクトであるセッション情報としてシリアライズして,グローバルセッション情報を作成します。

「false」を指定した場合は,直列化可能クラスのオブジェクトであるセッション情報は引き継ぎ対象外となります。引き継ぎ対象外のオブジェクトが登録された場合の扱いについては,「12.2.3(3) 引き継ぎ対象外のオブジェクトの扱い」を参照してください。

(c) 引き継ぎ可能なセッション情報のデータ型を指定する場合の注意事項

GSInfoTypeByteArrayEnableパラメタとGSInfoTypeSerializableEnableパラメタの指定値によって,引き継ぎ対象となるデータ型が異なります。各パラメタに指定する値と引き継ぎ対象となるデータ型の関係を次の表に示します。

表12-18 GSInfoTypeByteArrayEnableおよびGSInfoTypeSerializableEnableパラメタに指定する値と引き継ぎ対象となるデータ型の関係

GSInfoTypeByteArrayEnableパラメタ※1に指定する値 GSInfoTypeSerializableEnableパラメタ※2に「true」を指定 GSInfoTypeSerializableEnableパラメタ※2に「false」を指定
true 直列化可能クラスのオブジェクト java.lang.Stringクラスのオブジェクトまたはbyte型配列
false 直列化可能クラスのオブジェクト java.lang.Stringクラスのオブジェクト

注※1 byte型配列のセッション情報を引き継ぎ対象とするかどうかを指定するパラメタです。

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

なお,引き継ぎ対象外のオブジェクトが登録された場合の扱いについては,「12.2.3(3) 引き継ぎ対象外のオブジェクトの扱い」を参照してください。

(10) DDの定義例(HTTP Cookieによる制御の場合)

セッションフェイルオーバ機能を使用する場合のDDの定義例を示します。この例は,HTTP Cookieによってグローバルセッションを制御し,byte型配列のセッション情報を引き継ぐ場合の例です。

     :
<!--The filter for Session Fail Over -->
<filter>
   <filter-name>com.hitachi.software.was.sfo.web.SFOFilter</filter-name>
   <filter-class>com.hitachi.software.was.sfo.web.SFOFilter</filter-class>
   <init-param>
     <param-name>GSInfoKey-RW</param-name>
     <param-value>page</param-value>
   </init-param>
 
   <init-param>
     <param-name>GSInfoKey-R</param-name>
     <param-value>userId;roll</param-value>
   </init-param>
 
   <init-param>
     <param-name>GSInfosLengthMax</param-name>
     <param-value>44</param-value>
   </init-param>
 
   <init-param>
     <param-name>SFOServerName</param-name>
     <param-value>sfo_server1</param-value>
   </init-param>
 
   <init-param>
     <param-name>GSessionControl</param-name>
     <param-value>cookie</param-value>
   </init-param>
 
   <init-param>
     <param-name>GIDCookieName</param-name>
     <param-value>SFOSESSIONID</param-value>
   </init-param>
 
   <init-param>
     <param-name>LockTimeout</param-name>
     <param-value>180</param-value>
   </init-param>
 
   <init-param>
     <param-name>GSInfoTypeByteArrayEnable</param-name>
     <param-value>true</param-value>
   </init-param>
</filter>
 
<!-- Specify the filter tags here. -->
<filter>
   <filter-name>UserFilter</filter-name>
   <filter-class>filter.UserFilter</filter-class>
</filter>
 
<!-- The filter mappings for the Session Fail Over-->
<filter-mapping>
   <filter-name>com.hitachi.software.was.sfo.web.SFOFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
 
<!-- Specify the filter-mapping tags here. -->
<filter-mapping>
   <filter-name>UserFilter</filter-name>
   <url-pattern>/servlet/*</url-pattern>
</filter-mapping>
     :
</web-app>

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

(11) DDの定義例(URL書き換えによる制御の場合)

セッションフェイルオーバ機能を使用する場合のDDの定義例を示します。この例は,URL書き換えによってグローバルセッションを制御する場合の例です。

なお,ここでは,URL書き換えによる制御の場合にHTTP Cookieによる制御と異なる設定だけについて示します。これ以外の項目については,「(10) DDの定義例(HTTP Cookieによる制御の場合)」を参照してください。

     :
<!--The filter for Session Fail Over -->
<filter>
   <filter-name>com.hitachi.software.was.sfo.web.SFOFilter</filter-name>
   <filter-class>com.hitachi.software.was.sfo.web.SFOFilter</filter-class>
     :
   <init-param>
     <param-name>GSessionControl</param-name>
     <param-value>url-rewriting</param-value>
   </init-param>
 
   <init-param>
     <param-name>GIDURLParamName</param-name>
     <param-value>sfogid</param-value>
   </init-param>
     :
</filter>
 

この例では,グローバルセッションIDの送信に使用するURLのパスパラメタ名は,「sfogid」としています。

(12) DDの定義例(制御方法にbothを指定する場合)

セッションフェイルオーバ機能を使用する場合のDDの定義例を示します。この例は,制御方法としてGSessionControlに「both」を指定する場合の例です。bothは,WebクライアントがHTTP Cookieをサポートしているかどうかを判別して,必要に応じてHTTP Cookieによる制御とURL書き換えによる制御を切り替える方法です。

なお,ここでは,bothを指定する場合にHTTP Cookieによる制御と異なる設定だけについて示します。これ以外の項目については,「(10) DDの定義例(HTTP Cookieによる制御の場合)」を参照してください。

     :
<filter>
   <filter-name>com.hitachi.software.was.sfo.web.SFOFilter</filter-name>
   <filter-class>com.hitachi.software.was.sfo.web.SFOFilter</filter-class>
     :
   <init-param>
     <param-name>GSessionControl</param-name>
     <param-value>both</param-value>
   </init-param>
 
   <init-param>
     <param-name>GIDCookieName</param-name>
     <param-value>SFOSESSIONID</param-value>
   </init-param>
 
   <init-param>
     <param-name>GIDURLParamName</param-name>
     <param-value>sfogid</param-value>
   </init-param>
     :
</filter>

この例では,グローバルセッションIDの送信に使用するHTTP Cookieの名称は「SFOSESSIONID」としています。また,グローバルセッションIDの送信に使用するURLのパスパラメタ名は,「sfogid」としています。