Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 拡張編


5.6.1 セッションフェイルオーバ機能の抑止

セッションフェイルオーバ機能を有効にした場合,HTTPセッションを取得済みのリクエストを受け付けたときに,データベースへのアクセスや,HTTPセッションのシリアライズなどの処理が実施されます。静的コンテンツやHTTPセッションを必要としないコンテンツに対するリクエストであっても,HTTPセッションを取得済みのリクエストと同一のセッションIDが送信された場合には,セッションフェイルオーバ機能が動作してこれらの不要な処理が発生します。

これに対して,セッションフェイルオーバ機能を抑止するURLパターンをURIまたは拡張子で設定すると,設定したURLパターンのリクエストに対するセッションフェイルオーバ機能の処理が抑止されるため,不要な処理が発生しなくなり,処理性能が向上します。このように,セッションフェイルオーバ機能を設定している場合に,特定のURLパターンに対してだけセッションフェイルオーバを抑止する機能をセッションフェイルオーバ抑止機能といいます。

セッションフェイルオーバ抑止機能の有効・無効と実施される処理の違いを,データベースセッションフェイルオーバ機能を例に次の図に示します。

図5‒9 セッションフェイルオーバ抑止機能の有効・無効と実施される処理の違い(データベースセッションフェイルオーバ機能)

[図データ]

性能向上以外では,次のような目的でセッションフェイルオーバ抑止機能が使用できます。

完全性保障モードが有効の場合のデータベースセッションフェイルオーバ機能では,同一セッションIDのリクエストに対して,排他的に処理を実行します。例えば,PUSH配信をするために常駐するようなサーブレット/JSPなど,長時間処理が終了しないサーブレット/JSPをHTMLのフレームなどの一つから呼び出した場合,そのサーブレット/JSPの処理が終わるまで,同じフレームから送信されるすべてのリクエストは実行されません。これは,一つのフレームから送信されるリクエストはすべて同一のセッションIDを送信するリクエストになるためです。

このような状態を防ぐためには,HTTPセッションを使用していない特定のリクエストに対して,セッションフェイルオーバ機能を抑止する必要があります。

完全性保障モードを有効にしてデータベースセッションフェイルオーバ機能を使用している場合に,セッションフェイルオーバ抑止機能を有効または無効に設定したときに実施される処理の違いを次の図に示します。なお,図中のリクエスト1およびリクエスト2は,同一のセッションIDを送信するリクエストです。

図5‒10 セッションフェイルオーバ抑止機能の有効・無効と実施される処理の違い(データベースセッションフェイルオーバ機能)

[図データ]

セッションフェイルオーバ抑止機能の有効・無効は,J2EEサーバ単位またはWebアプリケーション単位に設定できます。