アダプタアクティベータの使用


アプリケーション開発者は、新しい POA を作成するときに、新しい POA 用に選択した特定のポリシーを宣言し、異なるアダプタアクティベータおよびサーバントマネージャ (これらは、必要に応じて POA の起動やサーバントの起動を行うために POA が使用するコールバックオブジェクト) を提供できます。オブジェクト ID は POA に対して相対的に解釈されるため、アプリケーション開発者は、新しい POA を作成することによってさらにオブジェクトの名前空間の区分けも行うことができます。また、新しい POA を作成すると、開発者は、複数のオブジェクトのセットに対する要求の処理を個別に制御できます。

アダプタアクティベータはオプションです。アダプタアクティベータは、要求の処理中に POA を作成する必要がある場合に使用します。アプリケーションの初期化時に、必要な POA がすべて作成されている場合は、アダプタアクティベータは必要ありません。

アダプタアクティベータを使用すると、POA は、必要に応じて子 POA を作成できるようになります。子 POA の作成は、子 POA (または複数の子のいずれか) を指定した要求を受信したときの副作用として実行されるか、あるいは起動パラメータ値 TRUE を使用して find_POA メソッドが呼び出されたときに実行されます。ORB は、存在していない子 POA への要求を受け取ると、アダプタアクティベータの操作を呼び出します。アダプタアクティベータは必要な POA をその場で作成します。

要求は、ターゲットオブジェクトのオブジェクト ID と、ターゲットオブジェクト参照を作成した POA の識別情報を伝達できる必要があります。クライアントから要求が発行されると、ORB は、初めに適切なサーバを探し (必要な場合は起動する)、次にそのサーバ内で適切な POA を探します。

サーバプロセス内に POA が存在しない場合、アプリケーションは、アダプタアクティベータを使用して必要な POA を再作成することができます。アダプタアクティベータは、ユーザによって実装されるオブジェクトで、POA に関連付けることができます。アダプタアクティベータは、存在していない POA への要求を受け取ったときに、ORB によって呼び出されます。ここでアダプタアクティベータに、必要な POA を作成する機会が与えられます。アダプタアクティベータが POA を作成しない場合、クライアントは ADAPTER_NONEXISTENT 例外を受け取ります。

ORB は、必要な POA を見つけると、その POA に要求を渡します。そのあとの要求の処理は、POA に関連付けられているポリシーと、オブジェクトの現在の起動状態によって異なります。

アダプタアクティベータの使用例

次のコードは、要求の処理中に POA を作成できるようにするためにアダプタアクティベータを使用するアプリケーションの例を示しています。このアプリケーションは、「Hello World」の例を基にして作成したものです。この例には次のファイルが含まれています。

この例を実行する方法については、「アダプタアクティベータのアプリケーション例の実行」を参照してください。

Client.java

サンプルクライアントのためのコードで、ORB を初期化し、HelloServant を解釈処理し、sayHello() メソッドを呼び出します。

Server.java

サーバーのためのコードで、次のような処理を行います。

Hello.idl

このインタフェース定義言語 (IDL) ファイルは、このサイト上の「Hello World」サンプルのすべてのバリエーションで使用されます。この IDL ファイルが記述している CORBA オブジェクトの sayHello() 操作が文字列を返します。

HelloServant.java

このサーバントは、Hello IDL インタフェースを実装したものです。Hello の各インスタンスは、HelloServant のインスタンスにより実装されます。サーバントは、idlj コンパイラによりサンプル IDL から生成される HelloPOA のサブクラスです。サーバントには、IDL 操作ごとに 1 つのメソッドが含まれます。この例では、sayHello() メソッドです。サーバントメソッドは、Java の通常のメソッドと変わりはありません。ORB の処理、引数や結果の整列化などを行うコードは、スケルトンで実装します。

Makefile

make プログラムは、UNIX シェルが実行する一連のコマンドを生成します。

run.bat

bat ユーティリティは、Microsoft Windows のコマンドシェルが実行する一連のコマンドを生成します。

アダプタアクティベータのアプリケーション例の実行

この例を実行するには、次のようにします。

Makefile を実行すると、端末ウィンドウに次の例のような出力が表示されます。

この例を実行し終えたら、ORDB をシャットダウンします。

関連情報

アダプタアクティベータの詳細については、CORBA 2.3.1 仕様の 11.3.3 項または「AdapterActivatorOperations API のドキュメント」を参照してください。


Java IDL トップへ