6.4.1 アプリケーション開始時の処理
ここでは,アプリケーション開始時に実施されるアプリケーションのネゴシエーション処理,およびアプリケーションのネゴシエーション処理で使用するアプリケーション識別子について説明します。
- 〈この項の構成〉
(1) アプリケーションのネゴシエーション処理
データベースセッションフェイルオーバ機能を使用するWebアプリケーションでは,アプリケーション開始時にネゴシエーション処理が実行されます。
ネゴシエーション処理では,次の内容が確認されます。
-
Webアプリケーションが一致していること
-
各Webアプリケーションの設定が一致していること
-
J2EEサーバの設定が一致していること
-
データベースの設定が正しいこと
ネゴシエーション処理の結果によってWebアプリケーションが開始されるかどうかが決まります。
ネゴシエーション処理の結果とWebアプリケーションの状態の関係を次の表に示します。
ネゴシエーションの処理中にデータベースアクセスでエラーが発生した場合,KDJE34312-Wのメッセージがメッセージログに出力されます。
(a) ネゴシエーションで確認される内容(データベースセッションフェイルオーバ機能)
ネゴシエーションで確認される内容の詳細について説明します。
-
Webアプリケーションが一致していること
確認項目がすべて一致することで,Webアプリケーションが一致していると判断されます。確認項目を次の表に示します。
表6‒7 Webアプリケーションの一致の確認のために使用される項目 項番
確認項目
1
アプリケーション識別子※
2
J2EEアプリケーション名
3
Webアプリケーション名(コンテキストルート名)
-
各Webアプリケーションの設定が一致していること
次の表に示す確認項目について,冗長化した各Webアプリケーションの設定が一致しているか確認されます。
表6‒8 各Webアプリケーションの設定の一致を確認するための項目 項番
確認項目
1
HttpSessionオブジェクト数の上限値
2
グローバルセッション情報に含めることができるHTTPセッションの属性情報の最大サイズ
3
DD(web.xml)に定義されたHTTPセッションの有効期間
4
データベースセッションフェイルオーバ機能を抑止する拡張子
-
J2EEサーバの設定が一致していること
次の表に示す確認項目について,冗長化した各J2EEサーバの設定が一致しているか確認されます。
表6‒9 各J2EEサーバの設定の一致を確認するための項目 項番
確認項目
1
完全性保障モードの設定
2
参照専用リクエストの設定
3
同時実行スレッド数制御機能を使用する場合の実行待ちキュー不足時の設定
4
データベースセッションフェイルオーバ機能の抑止対象リクエスト内での,getSessionメソッド実行時の例外の設定
-
データベースの設定が正しいこと
次の表に示す条件を満たしているかが確認されます。
表6‒10 データベースの設定が正しいことを確認するための条件 項番
条件
1
必要なテーブルがデータベースに存在すること。
2
存在するテーブルの内容がデータベースセッションフェイルオーバ機能用のテーブルの内容であること。
3
存在するテーブルがほかのアプリケーションで使用中でないこと。
(b) ネゴシエーションで確認されるWebアプリケーションの設定内容
最初にネゴシエーション処理に成功したWebアプリケーションの設定内容は,データベースのアプリケーション情報テーブルに保存されます。保存された設定内容はネゴシエーションの確認で使用される,正しい設定情報として扱われます。
このため,Webアプリケーションの設定内容を変更する場合は,すでにデータベースに保存されている,変更対象のWebアプリケーションに関連する設定情報を削除する必要があります。設定の変更手順については,「6.7 データベースセッションフェイルオーバ機能に関する設定の変更」を参照してください。
(2) アプリケーション識別子
アプリケーション識別子とは,データベースセッションフェイルオーバ機能使用時にクラスタリングされたWebアプリケーションを認識するための名称です。デフォルトの設定では,システムによって自動的に生成されます。
アプリケーション識別子は,ネゴシエーションでWebアプリケーションが一致しているかどうかの確認に使用されます。そのため,次の条件を満たしている必要があります。
-
冗長化したJ2EEサーバで動作する同一のWebアプリケーションで一致している。
-
システム内で一意の値である。
システムによって自動的に生成されるアプリケーション識別子が条件を満たさない場合,条件を満たす値を定義する必要があります。定義方法については「6.5 cosminexus.xmlでの定義」を参照してください。
アプリケーション識別子の自動生成規則,および自動生成されるアプリケーション識別子の例について説明します。
- 注意事項
-
異なるWebアプリケーションに同じアプリケーション識別子が設定されている場合,二つ目のWebアプリケーション開始時にネゴシエーションに失敗して,Webアプリケーションが開始されません。
(a) アプリケーション識別子の自動生成規則
デフォルトの設定では,アプリケーション識別子にはコンテキストルート名を基にした文字列が自動的に設定されます。アプリケーション識別子が自動的に生成された場合,Webアプリケーション開始時に,適用した値がKDJE34302-Iのメッセージでメッセージログに出力されます。
コンテキストルート名を基にしたアプリケーション識別子の自動生成には,次に示す規則が適用されます。
-
先頭のスラッシュ(/)は削除する。
-
先頭のスラッシュ(/)を除き,文字列長が16文字を超える場合,16文字までの文字列を使用する。
-
アプリケーション識別子に使用できない文字をコンテキストルート名で使用している場合,アンダースコア(_)に置換する。
アプリケーション識別子に使用できる文字は英数字(A〜Z,a〜z,0〜9),およびアンダースコア(_)だけです。また,設定した値は,大文字小文字が区別されます。
-
ルートコンテキストの場合,空文字列ではなく,「ROOT」とする。
自動生成規則を適用した結果,アプリケーション識別子がシステム内で一意でなくなる場合があります。この場合,同じアプリケーション識別子が設定されている二つ目のWebアプリケーション開始時にネゴシエーションに失敗して,Webアプリケーションが開始されません。そのため,Webアプリケーションに対してシステム内で一意になるアプリケーション識別子を設定する必要があります。
(b) 自動生成されるアプリケーション識別子の例
コンテキストルート名から自動生成されるデフォルトのアプリケーション識別子の例を次の表に示します。
項番 |
コンテキストルート名 |
アプリケーション識別子 |
作成時に適用されるルール |
---|---|---|---|
1 |
/examples |
examples |
先頭の"/"を削除する |
2 |
/App01/test1 |
App01_test1 |
|
3 |
/WebApplication_001 |
WebApplication_0 |
|
4 |
/examples/WebApplication |
examples_WebAppl |
|
5 |
/ |
ROOT |
ルートコンテキストのため"ROOT"とする |