Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

12.2.8 グローバルセッション情報の排他制御

ここでは,SFOサーバで管理しているグローバルセッション情報の排他制御について説明します。

セッションフェイルオーバ機能では,複数のJ2EEサーバから同じグローバルセッション情報を同時に更新されることを抑止するために,ロックを使用して排他制御を実現します。

J2EEサーバは,セッションに対するリクエスト処理を開始するときに,SFOサーバ上のグローバルセッション情報にロックを設定します。また,リクエスト処理が完了した時点でロックを解除します。

別のJ2EEサーバによってすでにロックが設定されているグローバルセッション情報をロックしようとした場合は,設定されているロックが解除されるまで,処理が待たされます。これを,ロック待ちといいます。

なお,ロック待ちには,タイムアウト時間を設定できます。タイムアウトが発生した場合,J2EEサーバは,該当するグローバルセッション情報が使用できないものと判断します。この場合,J2EEサーバは,SFOサーバ上の書き換え可能グローバルセッション情報を破棄して,J2EEアプリケーションを呼び出し,リクエスト処理を実行します。

ロック待ちのタイムアウト時間は,Webアプリケーション単位で設定できます。設定方法については,「12.7.4 DDの定義」を参照してください。

参考
異なるJ2EEサーバに振り分けられた場合,グローバルセッション情報のロック機能を使用して,更新業務を実行するJ2EEアプリケーションの排他制御も実現できます。
更新業務を実行するJ2EEアプリケーションでは,ダブルクリックなどによってリクエストが二重に送信されると,正常に処理が実行できなくなる場合があります。このため,J2EEアプリケーションでは,セッションなどを利用して,このような場合に二重に処理するのを抑止する必要があります。
セッションフェイルオーバ機能を使用している場合,ダブルクリックなどによって二重送信されたリクエストが異なるJ2EEサーバに送信されたときには,グローバルセッション情報のロック設定時にロック待ちが発生します。これによって,処理が二重に実施されるのを防げます。