ここでは,アプリケーション開始時に実施されるアプリケーションのネゴシエーション処理,およびアプリケーションのネゴシエーション処理で使用するアプリケーション識別子について説明します。
データベースセッションフェイルオーバ機能を使用するWebアプリケーションでは,アプリケーション開始時にネゴシエーション処理が実行されます。
ネゴシエーション処理では,次の内容が確認されます。
ネゴシエーション処理の結果によってWebアプリケーションが開始されるかどうかが決まります。
ネゴシエーション処理の結果とWebアプリケーションの状態の関係を次の表に示します。
表6-10 ネゴシエーション処理の結果とWebアプリケーションの状態の関係
ネゴシエーション処理の結果 | Webアプリケーションの状態 | ネゴシエーションの失敗の要因 | 出力されるメッセージ |
---|---|---|---|
成功(確認内容に問題なし) | 開始される | - | KDJE34306-I |
失敗(確認内容に問題あり) | 開始されない | Webアプリケーションが一致していない。 | KDJE34340-E |
開始されない※ | Webアプリケーションの設定が一致していない。 | KDJE34307-E | |
開始される※ | KDJE34358-I | ||
開始されない | J2EEサーバの設定が一致していない。 | KDJE34307-E | |
開始されない | 必要なテーブルがデータベースに存在していない。 | KDJE34308-W | |
開始されない | 存在するテーブルの内容がデータベースセッションフェイルオーバ機能用のテーブルの内容ではない。 | KDJE34309-E | |
開始されない | 存在するテーブルがほかのアプリケーションで使用されている。 | KDJE34340-E |
(凡例)-:該当なし
注※ 次の確認項目について,開始するWebアプリケーションと,その他のJ2EEサーバ上の同一Webアプリケーションとで異なる値が設定されていた場合,Webアプリケーションの開始処理を続行するか中止するかを,簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグにwebserver.dbsfo.negotiation.high_levelパラメタを指定することで選択できます。
これ以外の確認項目について一致していない場合は,Webアプリケーションは開始されません。
なお,Webアプリケーションの開始処理を中止する設定にした場合,HttpSessionオブジェクト数の上限値に1以上の有効な値を必ず設定してください。
ネゴシエーションの処理中にデータベースアクセスでエラーが発生した場合,KDJE34312-Wのメッセージがメッセージログに出力されます。
ネゴシエーションで確認される内容の詳細について説明します。
表6-11 Webアプリケーションの一致の確認のために使用される項目
項番 | 確認項目 |
---|---|
1 | アプリケーション識別子※ |
2 | J2EEアプリケーション名 |
3 | Webアプリケーション名(コンテキストルート名) |
注※ アプリケーション識別子については,「(2) アプリケーション識別子」を参照してください。
表6-12 各Webアプリケーションの設定の一致を確認するための項目
項番 | 確認項目 |
---|---|
1 | HttpSessionオブジェクト数の上限値 |
2 | グローバルセッション情報に含めることができるHTTPセッションの属性情報の最大サイズ |
3 | DD(web.xml)に定義されたHTTPセッションの有効期間 |
4 | データベースセッションフェイルオーバ機能を抑止する拡張子 |
表6-13 各J2EEサーバの設定の一致を確認するための項目
項番 | 確認項目 |
---|---|
1 | 完全性保障モードの設定 |
2 | 参照専用リクエストの設定 |
3 | 同時実行スレッド数制御機能を使用する場合の実行待ちキュー不足時の設定 |
4 | データベースセッションフェイルオーバ機能の抑止対象リクエスト内での,getSessionメソッド実行時の例外の設定 |
表6-14 データベースの設定が正しいことを確認するための条件
項番 | 条件 |
---|---|
1 | 必要なテーブルがデータベースに存在すること。 |
2 | 存在するテーブルの内容がデータベースセッションフェイルオーバ機能用のテーブルの内容であること。 |
3 | 存在するテーブルがほかのアプリケーションで使用中でないこと。 |
最初にネゴシエーション処理に成功したWebアプリケーションの設定内容は,データベースのアプリケーション情報テーブルに保存されます。保存された設定内容はネゴシエーションの確認で使用される,正しい設定情報として扱われます。
このため,Webアプリケーションの設定内容を変更する場合は,すでにデータベースに保存されている,変更対象のWebアプリケーションに関連する設定情報を削除する必要があります。設定の変更手順については,「6.15 データベースセッションフェイルオーバ機能に関する設定の変更」を参照してください。
アプリケーション識別子とは,データベースセッションフェイルオーバ機能使用時にクラスタリングされたWebアプリケーションを認識するための名称です。デフォルトの設定では,システムによって自動的に生成されます。
アプリケーション識別子は,ネゴシエーションでWebアプリケーションが一致しているかどうかの確認に使用されます。そのため,次の条件を満たしている必要があります。
システムによって自動的に生成されるアプリケーション識別子が条件を満たさない場合,条件を満たす値を定義する必要があります。定義方法については「6.10 cosminexus.xmlでの定義」を参照してください。
アプリケーション識別子の自動生成規則,および自動生成されるアプリケーション識別子の例について説明します。
デフォルトの設定では,アプリケーション識別子にはコンテキストルート名を基にした文字列が自動的に設定されます。アプリケーション識別子が自動的に生成された場合,Webアプリケーション開始時に,適用した値がKDJE34302-Iのメッセージでメッセージログに出力されます。
コンテキストルート名を基にしたアプリケーション識別子の自動生成には,次に示す規則が適用されます。
自動生成規則を適用した結果,アプリケーション識別子がシステム内で一意でなくなる場合があります。この場合,同じアプリケーション識別子が設定されている二つ目のWebアプリケーション開始時にネゴシエーションに失敗して,Webアプリケーションが開始されません。そのため,Webアプリケーションに対してシステム内で一意になるアプリケーション識別子を設定する必要があります。
コンテキストルート名から自動生成されるデフォルトのアプリケーション識別子の例を次の表に示します。
表6-15 自動生成されるデフォルトのアプリケーション識別子の例
項番 | コンテキストルート名 | アプリケーション識別子 | 作成時に適用されるルール |
---|---|---|---|
1 | /examples | examples | 先頭の"/"を削除する |
2 | /App01/test1 | App01_test1 |
|
3 | /WebApplication_001 | WebApplication_0 |
|
4 | /examples/WebApplication | examples_WebAppl |
|
5 | / | ROOT | ルートコンテキストのため"ROOT"とする |