Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 拡張編


6.4.1 アプリケーション開始時の処理

ここでは,アプリケーション開始時に実施されるアプリケーションのネゴシエーション処理,およびアプリケーションのネゴシエーション処理で使用するアプリケーション識別子について説明します。

〈この項の構成〉

(1) アプリケーションのネゴシエーション処理

データベースセッションフェイルオーバ機能を使用するWebアプリケーションでは,アプリケーション開始時にネゴシエーション処理が実行されます。

ネゴシエーション処理では,次の内容が確認されます。

ネゴシエーション処理の結果によってWebアプリケーションが開始されるかどうかが決まります。

ネゴシエーション処理の結果とWebアプリケーションの状態の関係を次の表に示します。

表6‒6 ネゴシエーション処理の結果と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パラメタを指定することで選択できます。

  • HttpSessionオブジェクト数の上限値

  • DD(web.xml)に定義されたHTTPセッションの有効期間

これ以外の確認項目について一致していない場合は,Webアプリケーションは開始されません。

なお,Webアプリケーションの開始処理を中止する設定にした場合,HttpSessionオブジェクト数の上限値に1以上の有効な値を必ず設定してください。

ネゴシエーションの処理中にデータベースアクセスでエラーが発生した場合,KDJE34312-Wのメッセージがメッセージログに出力されます。

(a) ネゴシエーションで確認される内容(データベースセッションフェイルオーバ機能)

ネゴシエーションで確認される内容の詳細について説明します。

  • Webアプリケーションが一致していること

    確認項目がすべて一致することで,Webアプリケーションが一致していると判断されます。確認項目を次の表に示します。

    表6‒7 Webアプリケーションの一致の確認のために使用される項目

    項番

    確認項目

    1

    アプリケーション識別子

    2

    J2EEアプリケーション名

    3

    Webアプリケーション名(コンテキストルート名)

    注※ アプリケーション識別子については,「6.4.1(2) アプリケーション識別子」を参照してください。

  • 各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アプリケーションが一致しているかどうかの確認に使用されます。そのため,次の条件を満たしている必要があります。

システムによって自動的に生成されるアプリケーション識別子が条件を満たさない場合,条件を満たす値を定義する必要があります。定義方法については「6.5 cosminexus.xmlでの定義」を参照してください。

アプリケーション識別子の自動生成規則,および自動生成されるアプリケーション識別子の例について説明します。

注意事項

異なるWebアプリケーションに同じアプリケーション識別子が設定されている場合,二つ目のWebアプリケーション開始時にネゴシエーションに失敗して,Webアプリケーションが開始されません。

(a) アプリケーション識別子の自動生成規則

デフォルトの設定では,アプリケーション識別子にはコンテキストルート名を基にした文字列が自動的に設定されます。アプリケーション識別子が自動的に生成された場合,Webアプリケーション開始時に,適用した値がKDJE34302-Iのメッセージでメッセージログに出力されます。

コンテキストルート名を基にしたアプリケーション識別子の自動生成には,次に示す規則が適用されます。

  • 先頭のスラッシュ(/)は削除する。

  • 先頭のスラッシュ(/)を除き,文字列長が16文字を超える場合,16文字までの文字列を使用する。

  • アプリケーション識別子に使用できない文字をコンテキストルート名で使用している場合,アンダースコア(_)に置換する。

    アプリケーション識別子に使用できる文字は英数字(A〜Z,a〜z,0〜9),およびアンダースコア(_)だけです。また,設定した値は,大文字小文字が区別されます。

  • ルートコンテキストの場合,空文字列ではなく,「ROOT」とする。

自動生成規則を適用した結果,アプリケーション識別子がシステム内で一意でなくなる場合があります。この場合,同じアプリケーション識別子が設定されている二つ目のWebアプリケーション開始時にネゴシエーションに失敗して,Webアプリケーションが開始されません。そのため,Webアプリケーションに対してシステム内で一意になるアプリケーション識別子を設定する必要があります。

(b) 自動生成されるアプリケーション識別子の例

コンテキストルート名から自動生成されるデフォルトのアプリケーション識別子の例を次の表に示します。

表6‒11 自動生成されるデフォルトのアプリケーション識別子の例

項番

コンテキストルート名

アプリケーション識別子

作成時に適用されるルール

1

/examples

examples

先頭の"/"を削除する

2

/App01/test1

App01_test1

  • 先頭の"/"を削除する

  • 途中の"/"を"_"に置換する

3

/WebApplication_001

WebApplication_0

  • 先頭の"/"を削除する

  • 17文字以降を削除する

4

/examples/WebApplication

examples_WebAppl

  • 先頭の"/"を削除する

  • 途中の"/"を"_"に置換する

  • 17文字以降を削除する

5

/

ROOT

ルートコンテキストのため"ROOT"とする