Cosminexus 機能解説
グローバルセッション情報とは,セッションフェイルオーバ機能で引き継がれるHTTPセッションの情報です。SFOサーバで管理されます。
SFOサーバでグローバルセッション情報として保持するセッション情報には,次の設定ができます。
これらの設定は,セッションフェイルオーバ用フィルタに設定します。セッションフェイルオーバ用フィルタの設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。
次に,各設定内容について説明します。
SFOサーバでは,引き継ぎ対象として選択したセッション情報だけがグローバルセッション情報として保持されます。グローバルセッション情報として選択できるセッション情報は,HTTPセッションに登録された一部,またはすべてです。引き継ぎ対象として選択するセッション情報は,グローバルセッション情報の種別ごとに指定できます。グローバルセッション情報の種別については,「(4) グローバルセッション情報の種別」を参照してください。
HTTPセッションに登録されたセッション情報のうち,一部のセッション情報をグローバルセッション情報として引き継ぐ場合には,あらかじめ,DD(web.xml)で引き継ぎ対象とするセッション情報のキー名称を指定する必要があります。この場合,Webアプリケーション内で動的にキー名称を作成するセッション情報をグローバルセッションとして指定することはできません。
HTTPセッションに登録された一部のセッション情報を引き継ぐ例を次の図に示します。
図12-6 HTTPセッションに登録された一部のセッション情報を引き継ぐ例
HTTPセッションに登録されたセッション情報を,グローバルセッション情報としてすべて引き継ぐ場合には,あらかじめ,DD(web.xml)で引き継ぎ対象とするセッション情報のキー名称を設定する必要はありません。ただし,すべてのセッション情報を引き継ぐ設定をする必要があります。
グローバルセッション情報として指定できるセッション情報には,次のデータ型のオブジェクトが指定できます。
java.lang.Stringクラス以外のデータ型のオブジェクトを引き継ぎ対象とする場合は,あらかじめ,DD(web.xml)でデータ型の引き継ぎを許可する設定が必要です。DD(web.xml)でデータ型の設定を省略した場合は,java.lang.Stringクラスのオブジェクトだけが引き継ぎ可能なセッション情報となります。
セッション情報が直列化可能クラスのオブジェクトである場合,グローバルセッション情報の更新,および引き継ぎ処理で,オブジェクトのシリアライズまたはデシリアライズ処理が必要になります。シリアライズ処理は,引き継ぎ対象のオブジェクトだけでなく,このオブジェクトから参照されるオブジェクトすべてを対象とします。このため,引き継ぐ必要がない情報を含むクラスの場合,性能が低下することがあります。
シリアライズ処理の対象範囲の例を次の図に示します。
図12-7 シリアライズ処理の対象範囲の例
この図では,HTTPセッションに登録されたオブジェクト(1〜3)にフィールドとして含まれているオブジェクト(a〜e)も,シリアライズ処理の対象に含まれます。
パフォーマンス向上のためには,グローバルセッション情報をjava.lang.Stringクラスまたはbyte型配列のオブジェクトに限定することをお勧めします。
グローバルセッション情報として引き継ぎ対象外となるオブジェクトがHTTPセッションに登録された場合の扱いについて説明します。引き継ぎ対象とするセッション情報のデータ型および範囲の設定によって,オブジェクトの扱いが異なります。
また,直列化可能クラスのオブジェクトの場合,セッション情報の引き継ぎ時にシリアライズ処理またはデシリアライズ処理を実施します。これらの処理に成功するかどうかによってもオブジェクトの扱いが異なります。
リクエスト処理完了時点で,HTTPセッションにjava.lang.Stringクラスまたはbyte型配列以外のオブジェクトが登録されている場合,引き継ぎ対象とするセッション情報の範囲の設定によって,セッション情報を引き継ぐかどうかが異なります。HTTPセッションに引き継ぎ対象外のオブジェクトが登録されている場合のセッション情報の引き継ぎ可否を次の表に示します。
表12-1 HTTPセッションに引き継ぎ対象以外のオブジェクトが登録されている場合のセッション情報の引き継ぎ可否
引き継ぎ対象とするセッション情報の範囲 | リクエスト処理完了時点の動作 | セッション情報の引き継ぎ可否 | |
---|---|---|---|
引き継ぎ対象外のオブジェクト | 引き継ぎ対象のオブジェクト | ||
一部のセッション情報※を引き継ぐ場合 | KDJE34226-Eのメッセージが出力され,エラーが通知されます。 HTTPセッションに登録されたすべての書き換え可能グローバルセッション情報は削除され,リクエストが処理されます。この場合,KDJE34219-WのメッセージがWarningレベルで出力されます。 |
セッション情報は引き継がれません。 | エラーが通知される原因となったHTTPセッションに登録された,すべてのセッション情報が引き継がれません。 |
すべてのセッション情報を引き継ぐ場合 | KDJE34255-WのメッセージがWarningレベルで出力されます。 | セッション情報は引き継がれません。 | セッション情報はSFOサーバに冗長化されて,引き継がれます。 |
注※ DD(web.xml)で指定したキーで登録されたセッション情報です。
リクエスト処理完了時点で,HTTPセッションに引き継ぎ対象外のオブジェクト登録されている場合,引き継ぎ対象とするセッション情報の設定範囲によって,セッション情報を引き継ぐかどうかが異なります。
また,直列化可能クラスのオブジェクトの場合,セッション情報の引き継ぎ時にシリアライズ処理またはデシリアライズ処理を実施します。これらの処理に成功するかどうかによってもオブジェクトの扱いが異なります。
表12-2 HTTPセッションに登録されたオブジェクトによるセッション情報の引き継ぎ可否(一部のセッション情報を引き継ぐ場合)
項番 | HTTPセッションに登録されたオブジェクトの内容 | リクエスト処理完了時点の動作 | セッション情報の引き継ぎ可否 | ||
---|---|---|---|---|---|
java.io.Serializableインタフェースの実装の有無 | シリアライズの成功/失敗 | 引き継ぎ対象外のオブジェクト | 引き継ぎ対象のオブジェクト | ||
1 | java.io.Serializableインタフェースの実装有り | シリアライズの成功 | リクエストは処理されます。 | −(該当しません) | セッション情報はSFOサーバに冗長化されて,引き継がれます。 |
2 | シリアライズの失敗 | KDJE34256-Eのメッセージが出力され,エラーが通知されます。 HttpSessionオブジェクトに登録されたすべての書き換え可能グローバルセッション情報は削除され,リクエストが処理されます。この場合,KDJE34219-WのメッセージがWarningレベルで出力されます。 |
セッション情報は引き継がれません。 | エラーが通知される原因となったHTTPセッションに登録された,すべてのセッション情報は引き継がれません。 | |
3 | java.io.Serializableインタフェースの実装無し | −(シリアライズできません) | KDJE34226-Eのメッセージが出力され,エラーが通知されます。 HTTPセッションに登録されたすべての書き換え可能グローバルセッション情報は削除され,リクエストが処理されます。この場合,KDJE34219-WのメッセージがWarningレベルで出力されます。 |
セッション情報は引き継がれません。 | エラーが通知される原因となったHTTPセッションに登録された,すべてのセッション情報は引き継がれません。 |
表12-3 HTTPセッションに登録されたオブジェクトによるセッション情報の引き継ぎ可否(すべてのセッション情報を引き継ぐ場合)
項番 | HTTPセッションに登録されたオブジェクトの内容 | リクエスト処理完了時点の動作 | セッション情報の引き継ぎ可否 | ||
---|---|---|---|---|---|
java.io.Serializableインタフェースの実装の有無 | シリアライズの成功/失敗 | 引き継ぎ対象外のオブジェクト | 引き継ぎ対象のオブジェクト | ||
1 | java.io.Serializableインタフェースの実装有り | シリアライズの成功 | リクエストは処理されます。 | −(該当しません) | セッション情報はSFOサーバに冗長化されて,引き継がれます。 |
2 | シリアライズの失敗 | KDJE34256-Eのメッセージ出力され,エラーが通知されます。 HttpSessionオブジェクトに登録されたすべての書き換え可能グローバルセッション情報は削除され,リクエストが処理されます。この場合,KDJE34219-WのメッセージがWarningレベルで出力されます。 |
セッション情報は引き継がれません。 | エラーが通知される原因となったHTTPセッションに登録された,すべてのセッション情報は引き継がれません。 | |
3 | java.io.Serializableインタフェースの実装無し | −(シリアライズできません) | KDJE34255-Wのメッセージが出力されます。 | セッション情報は無視され,引き継がれません。 | セッション情報はSFOサーバに冗長化されて,引き継がれます。 |
表12-4 デシリアライズ処理によるグローバルセッション情報の引き継ぎ可否
項番 | デシリアライズの成功/失敗 | 引き継ぎ先のJ2EEサーバの処理 | セッション情報の引き継ぎ可否 |
---|---|---|---|
1 | デシリアライズの成功 | SFOサーバから引き継いだグローバルセッション情報を使用してリクエストは処理されます。 | SFOサーバからJ2EEサーバへグローバルセッション情報が引き継がれます。 |
2 | デシリアライズの失敗 | グローバルセッション情報およびセッション情報を削除され,KDJE34258-EおよびKDJE34214-Eのメッセージが出力されます。 J2EEサーバ間のセッション情報の引き継ぎに失敗するため,リクエストはHTTPセッションがない状態で処理されます。 |
SFOサーバからJ2EEサーバへグローバルセッション情報は引き継がれません。 |
保持するセッション情報には,グローバルセッション情報の種別を設定します。グローバルセッション情報の種別には,次の2種類があります。
SFOサーバでは,HttpSessionオブジェクトに含まれるグローバルセッション情報は連結されて管理されます。直列化可能クラスのオブジェクトが引き継ぎ対象でない場合,セッション情報の連結には,区切り文字として半角セミコロン(;)が使用されます。直列化可能クラスのオブジェクトが引き継ぎ対象である場合は,連結するセッション情報がシリアライズ後の情報であるため,セッション情報の連結に区切り文字は使用されません。
なお,連結されたグローバルセッション情報のサイズには上限があります。上限を超えると,エラーになります。また,上限を超えたサイズのグローバルセッション情報は,SFOサーバでは管理されないので注意してください。グローバルセッション情報の最大サイズは,WebアプリケーションのDD(web.xml)で指定します。セッションフェイルオーバ機能を使用する場合に必要な定義については,「12.7.4 DDの定義」を参照してください。また,開発環境でグローバルセッション情報のサイズを見積もる場合には,グローバルセッション情報のサイズ見積もり機能が使用できます。グローバルセッション情報のサイズ見積もり機能については,「12.2.10 グローバルセッション情報のサイズの見積もり」を参照してください。
また,デプロイ後のWebアプリケーションの場合,Webアプリケーションを含むJ2EEアプリケーションの属性(プロパティ)として設定できます。デプロイ後のWebアプリケーションのセッションフェイルオーバ用フィルタの設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.