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

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

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

ここでは,J2EEアプリケーション開始時の処理の流れについて説明します。また,J2EEアプリケーション開始時に実行されるJ2EEサーバとSFOサーバのネゴシエーション処理についても説明します。

<この項の構成>
(1) J2EEアプリケーション開始時の処理の流れ
(2) J2EEサーバとSFOサーバのネゴシエーションで使用される情報
(3) ネゴシエーションが失敗した場合の対処

(1) J2EEアプリケーション開始時の処理の流れ

J2EEアプリケーション実行前に,セッションフェイルオーバ用フィルタの初期化処理が実施されます。初期化処理では,次の内容が実施されます。

  1. web.xmlのメモリセッションフェイルオーバ機能に関する設定の妥当性がチェックされます。
    設定内容に問題がある場合は,フィルタの初期化処理でエラーとなり,Webアプリケーションは開始されません。
  2. web.xmlの設定に問題がない場合,J2EEサーバからSFOサーバへの接続が実施されます。
    接続先のSFOサーバは,J2EEサーバごとに設定されています。設定方法については,「6.14 J2EEサーバの設定」を参照してください。
    なお,接続に失敗した場合は,次の点を確認してください。
    • SFOサーバが起動しているか
    • SFOサーバとの通信路に障害が発生していないか
    • J2EEサーバに設定されている,SFOサーバが登録されているCORBAネーミングサービスのIPアドレスまたはポート番号に誤りがないか
    • SFOサーバとして使用するJ2EEサーバの起動コマンドである"cjstartsv"コマンドの実行時に"-nosecurity"オプションが指定されているか
  3. SFOサーバとの接続に成功すると,SFOサーバとのネゴシエーションが実施されます。
    web.xmlで設定した内容に問題がない場合,SFOサーバとのネゴシエーションが実施されます。ネゴシエーション処理に使用される情報については,「(2) J2EEサーバとSFOサーバのネゴシエーションで使用される情報」を参照してください。
    ネゴシエーションに失敗した場合の対処については,「(3) ネゴシエーションが失敗した場合の対処」を参照してください。
  4. セッションフェイルオーバ用フィルタの初期化処理完了後,Webアプリケーションの開始時にメモリセッションフェイルオーバ機能の設定内容を示すKDJE34265-Iのメッセージが出力されます。
 
ポイント
グローバルセッションの制御にHTTP Cookieを使用するWebアプリケーションの場合,ネゴシエーションが成功すると,web.xmlで設定したグローバルセッションIDが使用するHTTP Cookie名称が,サーブレットコンテキストに属性として登録されます。属性の名称は,「com.hitachi.software.was.sfo.GIDCookieName」です。
このとき,Servlet仕様で提供されるリスナ,およびjavax.servlet.ServletContextAttributeListenerインタフェースを実装したリスナをWebアプリケーションに定義していた場合,attributeAddedメソッドの呼び出しがされます。
グローバルセッションの制御方法の設定,およびHTTP Cookieの名称の設定方法については,「6.12 DDでの定義」を参照してください。
●注意事項

(2) J2EEサーバとSFOサーバのネゴシエーションで使用される情報

J2EEアプリケーションの開始処理の中で実施される,ネゴシエーションで使用される情報について説明します。

セッションフェイルオーバ用フィルタは,ネゴシエーション処理を実行するときに,Webアプリケーションの情報をSFOサーバに送信します。SFOサーバでは,送信された情報のうちネゴシエーションで使用する情報について,冗長化されているほかのJ2EEサーバのWebアプリケーションの情報と比較します。これらの情報が,ほかのJ2EEサーバのWebアプリケーションの情報と異なる場合,フィルタの初期化処理でエラーとなり,Webアプリケーションは開始されません。

ネゴシエーション処理で使用される情報として,セッションフェイルオーバ用フィルタによってSFOサーバに送信される情報を次の表に示します。また,その中でほかのJ2EEサーバと同じ設定である必要がある情報も示します。

表6-13 ネゴシエーション処理で使用される情報

セッションフェイルオーバ用フィルタによってSFOサーバに送信される情報 同じ設定にする情報
J2EEアプリケーション名
Webアプリケーションのコンテキストルート名
HttpSession数の上限値
セッション情報の最大サイズ
DDに定義されたHTTPセッションの有効期間
グローバルセッションの制御方法
グローバルセッションIDの送信に使用するHTTP Cookieの名称   ※1
グローバルセッションIDの送信に使用するURLのパスパラメタ名   ※2
SFOサーバ内のロック待ちでのタイムアウト時間
書き換え可能グローバルセッション情報のキー名称
読み込み専用グローバルセッション情報のキー名称
J2EEサーバに設定されたHttpセッションのセッションIDへ付加するサーバID
byte型配列であるセッション情報の引き継ぎ許可  ※3
直列化可能クラスのオブジェクトであるセッション情報の引き継ぎ許可

(凡例)
○:ほかのJ2EEサーバと同じ設定にする必要がある。
−:ほかのJ2EEサーバと同じ設定でなくてもかまわない。

注※1
グローバルセッションの制御方法がHTTP Cookieを使用する方法の場合に同じ設定である必要があります。URL書き換えを使用する場合,同じ設定でなくてもかまいません。

注※2
グローバルセッションの制御方法がURL書き換えを使用する方法の場合に同じ設定である必要があります。HTTP Cookieを使用する場合,同じ設定でなくてもかまいません。

注※3
直列化可能クラスのオブジェクトであるセッション情報を引き継ぎ対象とする場合は,同じ設定でなくてもかまいません。

また,セッションフェイルオーバ用フィルタによってSFOサーバに送信される情報のうち,HttpSessionのセッションIDに付けられるサーバIDは,J2EEサーバに対してそれぞれ一意となる値が設定されている必要があります。このため,すでに接続されているJ2EEサーバに設定されたサーバIDと同じ値である場合は,ネゴシエーションが失敗し,Webアプリケーションは開始されません。

(3) ネゴシエーションが失敗した場合の対処

ネゴシエーションで使用する情報の不一致によってネゴシエーションに失敗した場合,J2EEサーバのメッセージログ,およびSFOサーバのメッセージログにエラーメッセージが出力されます。エラーの原因となった個所の設定を見直し,再度Webアプリケーションをデプロイしてください。

なお,ネゴシエーション中に,次に示す要因でエラーが発生した場合,ネゴシエーションは失敗しますが,メモリセッションフェイルオーバ機能が無効な状態でWebアプリケーションの処理は続行されます。

エラーが発生した場合は,J2EEサーバおよびSFOサーバで出力されたメッセージログとSFOサーバの状態を確認して,エラーの原因を取り除いてください。

なお,エラー発生後,J2EEサーバはWebアプリケーションの処理を続行しながら,定期的にSFOサーバへの接続を試みます。J2EEサーバがSFOサーバに接続ができた場合,再度ネゴシエーション処理が実行されます。

ネゴシエーションが成功すると,メモリセッションフェイルオーバ機能が有効になります。