6.4.2 グローバルセッション情報として引き継げるHTTPセッションの属性

ここでは,引き継げるHTTPセッションの属性に関する次の項目について説明します。

<この項の構成>
(1) 引き継げるHTTPセッションの属性の条件
(2) 引き継ぎ対象としてサポートされるオブジェクト
(3) オブジェクトの内容によるセッション情報の引き継ぎ可否
(4) HTTPセッションの属性引き継ぎ時のシリアライズ処理についての注意事項
(5) HTTPセッションの属性引き継ぎ時のデシリアライズ処理についての注意事項

(1) 引き継げるHTTPセッションの属性の条件

データベースセッションフェイルオーバ機能では,グローバルセッション情報の更新および引き継ぎ処理で,オブジェクトのシリアライズまたはデシリアライズ処理が発生します。そのため,HTTPセッションに登録する属性は,次の条件を満たす必要があります。

(2) 引き継ぎ対象としてサポートされるオブジェクト

データベースセッションフェイルオーバ機能では,次に示す直列化可能クラスのオブジェクトを引き継ぎ対象としてサポートしています。

ただし,引き継ぎ処理では,HTTPセッションに登録された直列化可能クラスのオブジェクトが,データベースセッションフェイルオーバ機能でサポートされているオブジェクトかどうかはチェックされません。

(3) オブジェクトの内容によるセッション情報の引き継ぎ可否

HTTPセッションに登録されたオブジェクトの内容によるセッション情報の引き継ぎ可否を次の表に示します。

表6-8 HTTPセッションに登録されたオブジェクトによるセッション情報の引き継ぎ可否

項番HTTPセッションに登録されたオブジェクトの内容リクエスト処理完了時点の動作セッション情報の引き継ぎ可否
java.io.Serializableインタフェースの実装の有無シリアライズの成功/失敗
1java.io.Serializableインタフェースの実装ありシリアライズの成功リクエストが正常に処理されます。シリアライズ後の情報がデータベースに冗長化されて引き継がれます。
2シリアライズの失敗J2EEサーバで,エラーを通知するKDJE34318-Eのメッセージが出力されます。
HTTPセッションに対応するデータベース上のグローバルセッション情報は削除されます。
次回以降のリクエスト処理完了後に,HTTPセッションに登録されたオブジェクトがシリアライズ可能となった時点で,データベース上にグローバルセッション情報が作成されます。
HTTPセッションに格納した場合,シリアライズに失敗した属性を含むHTTPセッションは,グローバルセッション引き継ぎの対象となりません。
エラーが通知される原因となったHTTPセッションに登録されたセッション情報は引き継がれません。
3java.io.Serializableインタフェースの実装なし(シリアライズできません)J2EEサーバでKDJE34317-Wのメッセージが出力されます。
シリアライズできない属性を除いた属性についてグローバルセッション情報が作成されます。
エラーが通知される原因となったHTTPセッションに登録されたセッション情報は引き継がれません。

(4) HTTPセッションの属性引き継ぎ時のシリアライズ処理についての注意事項

シリアライズ処理についての注意事項を次に示します。

(a) シリアライズ処理が性能に与える影響

引き継ぎ対象のオブジェクトだけでなく,引き継ぎ対象のオブジェクトから参照されるオブジェクトすべてを対象としてシリアライズ処理が実行されます。このため,引き継ぐ必要がない情報を含むクラスなどをHTTPセッションに登録した場合,性能が低下するおそれがあります。

(b) java.lang.OutOfMemoryErrorエラーが発生する場合

シリアライズ処理では,一時的に,アプリケーションで設定したHttpSessionオブジェクト数を超えてシリアライズ後のデータが作成されます。そのため,設定したサイズを超える巨大なオブジェクトがHTTPセッションに登録された場合,グローバルセッション情報の作成中にjava.lang.OutOfMemoryErrorエラーが発生することがあります。

(c) シリアライズに失敗する場合とその対処

次のような場合は,KDJE34337-W,またはKDJE34338-Eのメッセージを出力してシリアライズに失敗します。

失敗した場合,グローバルセッション情報の更新,および引き継ぎ処理が実行されません。処理を実行するためには,次のどちらかの対処が必要です。

(5) HTTPセッションの属性引き継ぎ時のデシリアライズ処理についての注意事項

次のような場合は,デシリアライズに失敗します。

デシリアライズに失敗した場合,グローバルセッション情報およびセッション情報が削除され,KDJE34326-Eが出力されます。セッションの引き継ぎに失敗するため,HTTPセッションがない状態でリクエストが処理されます。