Cosminexus 機能解説
(1) J2EEアプリケーション開始時の処理の流れ
J2EEアプリケーション実行前に,セッションフェイルオーバ用フィルタの初期化処理が実施されます。初期化処理では,次の内容が実施されます。
- web.xmlのセッションフェイルオーバ機能に関する設定の妥当性がチェックされます。
設定内容に問題がある場合は,フィルタの初期化処理でエラーとなり,Webアプリケーションは開始されません。
- web.xmlの設定に問題がない場合,J2EEサーバからSFOサーバへの接続が実施されます。
接続先のSFOサーバは,J2EEサーバごとに設定されています。設定方法については,マニュアル「Cosminexus システム構築ガイド」の,セッション情報の引き継ぎを行うJ2EEサーバの設定についての説明を参照してください。
なお,接続に失敗した場合は,次の点を確認してください。
- SFOサーバが起動しているか
- SFOサーバとの通信路に障害が発生していないか
- J2EEサーバに設定されている,SFOサーバが登録されているCORBAネーミングサービスのIPアドレスまたはポート番号に誤りがないか
- SFOサーバとして使用するJ2EEサーバの起動コマンドである"cjstartsv"コマンドの実行時に"-nosecurity"オプションが指定されているか
- SFOサーバとの接続に成功すると,SFOサーバとのネゴシエーションが実施されます。
web.xmlで設定した内容に問題がない場合,SFOサーバとのネゴシエーションが実施されます。ネゴシエーション処理に使用される情報については,「(2) J2EEサーバとSFOサーバのネゴシエーションで使用される情報」を参照してください。
ネゴシエーションに失敗した場合の対処については,「(3) ネゴシエーションが失敗した場合の対処」を参照してください。
- セッションフェイルオーバ用フィルタの初期化処理完了後,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の名称の設定方法については,マニュアル「Cosminexus システム構築ガイド」の,セッションフェイルオーバ用フィルタの設定についての説明を参照してください。
●注意事項
- SFOサーバの稼働状態に異常があったり,SFOサーバが稼働するマシンのメモリ使用量に異常があったりして,60秒以内にネゴシエーション処理が完了しなかった場合,J2EEサーバはSFOサーバとのネゴシエーションに失敗したと判断して,SFOサーバとの接続を切断します。
なお,SFOサーバ側でネゴシエーションが成功していても,J2EEサーバとの接続が切断されていることを検知した時点で,グローバルセッション情報の保持を終了します。
なお,J2EEサーバの接続検知については,「12.2.4(1) SFOサーバ」を参照してください。
- SFOサーバとJ2EEサーバとのネゴシエーションが成功すると,SFOサーバには,Webアプリケーションの設定情報が登録されます。Webアプリケーションの情報を変更して,SFOサーバに接続すると,SFOサーバには変更前のWebアプリケーションの情報があるため,ネゴシエーションに失敗します。そのため,SFOサーバに登録されたWebアプリケーションの設定情報を削除してからWebアプリケーションを開始する必要があります。なお,Webアプリケーションの設定情報の削除については,マニュアル「Cosminexus システム構築ガイド」を参照してください。
- SFOサーバが起動していない状態でJ2EEアプリケーションを開始していた場合,またはJ2EEサーバとの接続中にSFOサーバを再起動した場合,J2EEサーバは,起動または再起動後のSFOサーバに接続します。SFOサーバとの接続完了後,アプリケーション開始と同様のネゴシエーションが実行されます。
なお,このときにネゴシエーションに失敗したWebアプリケーションは,以降,SFOサーバへの接続はしません。この場合,セッションフェイルオーバ機能が無効なまま処理が続行されます。
セッションフェイルオーバ機能を有効にするためには,J2EEアプリケーションを一度停止してください。該当するWebアプリケーションのセッションフェイルオーバ機能に関する設定を正しくした上で,J2EEアプリケーションを再度開始してください。
(2) J2EEサーバとSFOサーバのネゴシエーションで使用される情報
J2EEアプリケーションの開始処理の中で実施される,ネゴシエーションで使用される情報について説明します。
セッションフェイルオーバ用フィルタは,ネゴシエーション処理を実行するときに,Webアプリケーションの情報をSFOサーバに送信します。SFOサーバでは,送信された情報のうちネゴシエーションで使用する情報について,冗長化されているほかのJ2EEサーバのWebアプリケーションの情報と比較します。これらの情報が,ほかのJ2EEサーバのWebアプリケーションの情報と異なる場合,フィルタの初期化処理でエラーとなり,Webアプリケーションは開始されません。
ネゴシエーション処理で使用される情報として,セッションフェイルオーバ用フィルタによってSFOサーバに送信される情報を次の表に示します。また,その中でほかのJ2EEサーバと同じ設定である必要がある情報も示します。
表12-7 ネゴシエーション処理で使用される情報
セッションフェイルオーバ用フィルタによってSFOサーバに送信される情報 |
ほかのJ2EEサーバと同じ設定である必要がある情報 |
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アプリケーションの処理は続行されます。
- SFOサーバのメモリが不足している
- ネゴシエーション処理のタイムアウトが発生した
- ネゴシエーション中にSFOサーバまたは通信路に障害が発生した
- 必要な機能をSFOサーバがサポートしていない(SFOサーバのバージョンがJ2EEサーバのバージョンと合っていない)
エラーが発生した場合は,J2EEサーバおよびSFOサーバで出力されたメッセージログとSFOサーバの状態を確認して,エラーの原因を取り除いてください。
なお,エラー発生後,J2EEサーバはWebアプリケーションの処理を続行しながら,定期的にSFOサーバへの接続を試みます。J2EEサーバがSFOサーバに接続ができた場合,再度ネゴシエーション処理が実行されます。
ネゴシエーションが成功すると,セッションフェイルオーバ機能が有効になります。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.