5.6.2 HTTPセッションの参照専用リクエストの定義
HTTPセッションの参照専用リクエストの定義機能とは,HTTPセッションを更新しないで参照だけするリクエスト(参照専用リクエスト)のURLパターンを設定することで,そのURLパターンのリクエストに対してHTTPセッションのシリアライズや,データベースへのアクセスの処理を抑止する機能です。
この機能は,データベースセッションフェイルオーバ機能の完全性保障モードが無効の場合に使用できます。
なお,HTTPセッションを更新だけでなく参照もしないリクエストの場合は,セッションフェイルオーバ抑止機能を使用できます。参照専用リクエストとセッションフェイルオーバ抑止機能の対象リクエストの両方に該当するリクエストの場合,セッションフェイルオーバ抑止機能の対象リクエストとして処理されます。セッションフェイルオーバ抑止機能については,「5.6.1 セッションフェイルオーバ機能の抑止」を参照してください。
HTTPセッションの参照専用リクエストの定義機能は,J2EEサーバ単位またはWebアプリケーション単位に設定できます。
データベースセッションフェイルオーバ機能のJ2EEサーバ単位の設定については,「6.6.1 J2EEサーバの設定」を参照してください。
-
注意事項
HTTPセッションの参照専用リクエストの定義について,注意事項を示します。
-
参照専用リクエストでは,HTTPセッションを無効化できません。参照専用リクエストで,HTTPセッションを無効化するjavax.servlet.http.HttpSessionインタフェースのinvalidate()メソッドをWebアプリケーション内で呼び出した場合,com.hitachi.software.web.dbsfo.SessionOperationException例外がスローされます。
-
参照専用リクエストの場合でも,HTTPセッションが存在しない初回のリクエストのときは,HTTPセッションが作成・更新・削除されます。この際,データベース上のグローバルセッション情報も更新されます。
HTTPセッションが存在する2回目以降のリクエストでは,WebアプリケーションがHTTPセッションを更新しても,データベース上のグローバルセッション情報は更新されません。そのため,グローバルセッションの引き継ぎが発生すると,HTTPセッションの属性情報は更新前の状態に戻ります。
-
参照専用リクエストの処理内で,HTTPセッションの有効期限の変更(javax.servlet.http.HttpSessionインタフェースのsetMaxInactiveInterval()メソッドの呼び出し)をした場合,グローバルセッションの有効期限は変更されません。そのため,グローバルセッションの引き継ぎが発生すると,有効期限は変更前の状態に戻ります。
-
参照専用リクエストの処理内で,HTTPセッションの属性情報の変更をした場合,グローバルセッション情報は変更されません。そのため,グローバルセッションの引き継ぎが発生すると,HTTPセッションの属性情報は変更前の状態に戻ります。なお,属性情報の変更とは次のことを指します。
・javax.servlet.http.HttpSessionインタフェースのsetAttribute()メソッドまたはputValue()メソッドで,HTTPセッションに新しい属性情報を登録する,または登録済みのセッション属性を置き換える。
・javax.servlet.http.HttpSessionインタフェースのremoveAttribute()メソッドまたはremoveValue()メソッドで,HTTPセッションに登録済みの属性情報を削除する。
・HTTPセッションに登録済みの属性情報の内容を変更する。
セッションの属性情報の内容を変更する場合の例を次に示します。
java.util.Hashtable table = (java.util.Hashtable)session.getAttribute("attr1"); table.put("key1", "value1");
この例では,sessionはHttpSessionオブジェクトを格納した変数です。java.util.Hashtableオブジェクトは,別のリクエストで「attr1」という名前でHttpSessionオブジェクトにセッションの属性情報として登録済みとします。
-