2.7.3 セッションの管理方法
ここでは,セッションの管理方法とセッションIDの管理について説明します。
- 〈この項の構成〉
(1) セッションの管理方法
トラッキングモードでWebコンテナのセッションの管理方法を指定します。トラッキングモードには,HTTP Cookieを使用する方法と,URL書き換えを使用する方法の2種類があります。トラッキングモードは,そのどちらか一方,または両方を選択できます。
-
HTTP Cookieだけを使用する場合
HTTP Cookieによるセッション管理だけが有効になります。このとき,URL書き換えで生成される文字列にセッションIDを示すURLパスパラメタは含まれません。
-
URL書き換えだけを使用する場合
URL書き換えによるセッション管理だけが有効になります。このとき,レスポンスにセッションIDを示すHTTP Cookieの情報は含まれません。
-
HTTP CookieとURL書き換えの両方を使用する場合
HTTP Cookieによるセッション管理とURL書き換えによるセッション管理の両方が有効になります。Webコンテナは,セッションがどの方法で管理されているかを,セッションIDが何から取得できたかによって判別します。HTTP CookieからセッションIDを取得した場合は,HTTP Cookieによってセッションを管理していると判別します。URLのパスパラメタから取得できた場合は,URL書き換えによってセッションを管理していると判別します。これらの判別は,リクエストごとに実行されます。
(2) セッションの管理にHTTP Cookieを使用する場合のセッションIDの管理
セッションIDは,HTTP Cookieとして管理されます。HTTP CookieにはHttpOnly属性を付与できます。
HTTPセッションを新規に作成した場合に,HTTPレスポンスのヘッダにセッションIDを示すHTTP Cookieが付加されます。セッションIDを示すHTTP Cookieの名称は,「JSESSIONID」です。この名称は,アプリケーションサーバのバージョンが09-00以降の場合,変更できます。
なお,作成したHTTPセッションをコミットする前に無効化した場合,HTTP Cookieは付加されません。
(3) セッションの管理にURL書き換えを使用する場合のセッションIDの管理
セッションIDは,URLのパスパラメタとして管理されます。
セッションIDを示すURLのパスパラメタの名称は,「jsessionid」です。この名称は,アプリケーションサーバのバージョンが09-00以降の場合,変更できます。セッションIDは,WebコンテナによってURLが書き換えられるときに,URLのパスの最後に,「;jsessionid=セッションID」の形式で付加されます。
URLのパスは,階層構造を持っている,リソースを識別するための値です。URLのパスには,クエリやフラグメントは含まれません。このため,これらの要素がURLに含まれている場合,セッションIDは,クエリまたはフラグメントの直前に付加されます。また,URLにセッションID以外のパスパラメタが含まれている場合,セッションIDを示すパスパラメタは,URLに含まれるパスパラメタの最後に付加されます。
- ポイント
-
セッションIDをURLのパスパラメタに追加する場合,URLの文字数が増加します。
増加する文字数を次の表に示します。
表2‒28 URL書き換えによって増加するURLの文字数 機能の使用状況
増加するURLの文字数(単位:文字数)
サーバID付加機能を使用していない場合
44※
サーバID付加機能を使用している場合
44※ + サーバIDの文字数
データベースセッションフェイルオーバ機能(完全性保障モードが無効の場合)
44※ + サーバIDの文字数 + 16(英数字の文字数)