データベースセッションフェイルオーバ機能を使用する場合,データベースにはタイムアウト(HiRDBの場合UAP処理時間監視機能)の設定をしてください。
データベースセッションフェイルオーバ機能が有効の場合,機能の処理の中で操作対象となるデータベースのテーブルのレコードが排他制御されます。そのため,J2EEサーバのホストでの障害発生時などに,操作対象となっていたレコードが排他されたままになる場合があります。このとき,HTTPセッションの新規作成や,J2EEサーバとデータベースとの接続に失敗するおそれがあります。
タイムアウトの設定をしておくと,このような状況を検知してタイムアウト時にトランザクションがロールバックされ,レコードが排他制御される前の状態に戻るため,システムへの影響はなくなります。
なお,誤動作を防ぐために,データベースのタイムアウトの値にはDB Connectorに設定するタイムアウトの値よりも大きな値を設定してください。データベースの設定内容,手順については,HiRDBを使用する場合はマニュアル「HiRDB UAP開発ガイド」を,Oracleを使用する場合はOracleのマニュアルを参照してください。
レコードが排他制御される処理,処理中に操作対象となるテーブル,処理中にJ2EEサーバで障害が発生した場合のシステムへの影響,および出力されるメッセージを次の表に示します。
表6-45 レコードが排他制御される処理と処理中にJ2EEサーバで障害が発生した場合のシステムへの影響
項番 | レコードが排他制御される処理 | 操作対象のテーブル | 障害が発生した場合のシステムへの影響 | 出力されるメッセージ |
---|---|---|---|---|
1 | Webアプリケーション開始時のネゴシエーション処理 | アプリケーション情報テーブル | アプリケーションのネゴシエーションに失敗するため,データベースセッションフェイルオーバ機能を使用するWebアプリケーションの開始に失敗します。 | 出力されない |
2 | グローバルセッション情報の作成処理 | 空きレコード情報テーブル | システムで作成できるHTTPセッションの数が全体の90%になります。このあと,HTTPセッションの作成,または削除処理に失敗する場合があります。 |
|
3 | グローバルセッション情報の削除処理 | 空きレコード情報テーブル | システムで作成できるHTTPセッションの数が全体の90%になります。このあと,HTTPセッションの作成,または削除処理に失敗する場合があります。 |
|
4 | グローバルセッション情報の更新処理 | セッション情報格納テーブル | システムで作成できるHTTPセッションの数が1個分減少します。このあと,減少したHTTPセッションを操作するリクエストを受信すると,HTTPセッションの取得に失敗します。 |
|
5 | グローバルセッション情報の有効期限監視処理 | アプリケーション情報テーブル | データベース上のグローバルセッション情報の有効期限が監視されなくなります。 |
|