Cosminexus V9 アプリケーションサーバ 機能解説 互換編

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

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

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

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

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

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

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

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

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