Hitachi

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


3.3.6 グローバルCORBAネーミングサービス

CTMを使用したリクエストのスケジューリングでは,ネーミングサービスとしてグローバルCORBAネーミングサービスを使用します。

グローバルCORBAネーミングサービスとは,同じCTMドメイン内に含まれるホスト上の業務処理プログラム(Stateless Session Bean)の情報を共有管理しているネーミングサービスのことです。グローバルCORBAネーミングサービスでは,それぞれのホスト上に登録されているEJBホームオブジェクトリファレンスの情報を,CTMドメイン内で共有しています。これによって,リクエストを受け付けたCTMデーモンが処理対象としているJ2EEサーバに目的の業務処理プログラムが登録されていない場合でも,CTMドメイン内のほかのホスト上に存在するCTMデーモンから,目的の業務処理プログラムが登録されているJ2EEサーバを探せるようになり,適切なCTMデーモンにリクエストを振り分けられるようになります。

グローバルCORBAネーミングサービスは,CTMデーモン一つに対して一つ配置します。CTMデーモンは,ほかのCTMデーモンと情報を交換した時に得たほかのホスト上にある業務処理プログラムの情報を,自ホスト内のグローバルCORBAネーミングサービスに登録します。これによって,CTMドメイン内で,グローバルCORBAネーミングサービスの情報が共有,同期されます。このため,J2EEサーバを配置しないでグローバルCORBAネーミングサービスだけを配置するホスト(統合ネーミングスケジューラサーバ)の場合も,ほかのホスト上で動作しているJ2EEサーバの情報を得るために,CTMデーモンを配置する必要があります。

グローバルCORBAネーミングサービスの特徴を次に示します。

グローバルCORBAネーミングサービスを使用した処理の流れの例を次の図に示します。

この例ではホストAとホストBのCTMデーモンが同じCTMドメインに登録されています。ホストAのJ2EEサーバには業務処理プログラムAとBが,ホストBのJ2EEサーバには業務処理プログラムCが登録されています。ただし,ホストAでは障害が発生しています。また,EJBクライアントアプリケーションは,システムプロパティ(java.naming.factory.initialキー)にラウンドロビン検索を実行する指定をして開始しています。

図3‒13 グローバルCORBAネーミングサービスを使用した処理の流れの例

[図データ]

図について説明します。

  1. EJBクライアントアプリケーションから業務処理プログラムCを実行するためには,まず,グローバルCORBAネーミングサービスからEJBホームオブジェクトリファレンスをルックアップする必要があります。この図では,ホストAのグローバルCORBAネーミングサービスを対象にlookupを実行しましたが,ホストAでは,障害が発生していたため,lookupに対して例外が発生します。

  2. 特定のグローバルCORBAネーミングサービスで障害が発生した場合に,EJBクライアントアプリケーションのシステムプロパティでラウンドロビン検索の実行が指定されていると,自動的にCTMドメイン内のほかのグローバルCORBAネーミングサービスにlookupの対象が切り替えられます。そこで,EJBクライアントアプリケーションから再度lookupを実行すると,ホストBのグローバルCORBAネーミングサービスから業務処理プログラムCのEJBホームオブジェクトリファレンスが取得できます。業務処理プログラムCはアプリケーションサーバB上にあるので,アプリケーションサーバAの障害とは関係なく,処理を実行できます。

なお,アプリケーションサーバAに障害が発生していなかった場合は,1.のlookupの結果,ホストAのグローバルCORBAネーミングサービスに登録されていたリファレンスが返却されます。そのリファレンスを使用してcreateを実行すると,ホストAのCTMデーモンとホストBのCTMデーモン間でリクエストの振り分けが実行され,ホストBにある業務処理プログラムCのEJBホームオブジェクトリファレンスが返却されます。

注意事項
  • グローバルCORBAネーミングサービスが登録されているホストでトラブルが発生した場合は,そのホスト上のアプリケーションサーバ全体を再起動して,CTMデーモンからスケジュールキューのリファレンスを再度グローバルCORBAネーミングサービスに登録し直す必要があります。

  • リクエスト処理中に「CORBA::XXXX」という例外を標準出力,または標準エラー出力に表示することがあります。そのままの状態で動作し続ける場合には問題ありません。