このドキュメントは、今回のリリースでは更新されませんでした。
更新されている場合、ここには次のトピックが含まれています。
クライアントが CORBA オブジェクトのオペレーションを呼び出すには、クライアントとサーバー (オブジェクトの実装) の両方が ORB (Object Request Broker) という CORBA ソフトウェアコンポーネントを使用する必要があります。ORB は、クライアントとサーバーとで異なる位置、プラットフォーム、およびプログラム言語の違いを埋める役目を果たす共通の基準です。ORB は、ネットワーク経由で互いにコンタクトをとることが可能で、オブジェクトの参照 (CORBA オブジェクトハンドル) を作成および解釈することができます。また、パラメータを IIOP が使用する形式に整列化したり、IIOP が使用する形式からほかの形式に整列化することもできます。ここでは説明を省略しますが、ORB は、クライアント/サーバー通信の有効化以外のサービスも提供します。
CORBA オブジェクトのオペレーションを呼び出すには、次の 2 通りの方法があります。
CORBA オブジェクトで静的な呼び出しを行う場合、Java クライアントには、オペレーションを実行するサーバントへのオブジェクト参照が必要になります。オブジェクト参照には、次の 2 つの重要な機能があります。
OMG IDL は、CORBA オブジェクトのインタフェースを定義する言語です。idlj コンパイラは、OMG IDL モジュールごとに Java パッケージを生成します。OMG IDL モジュールで定義された各インタフェース Foo
に対して生成されたパッケージには、クライアントプログラマにとって有用な次の項目が含まれています。
Foo
。シグニチャーインタフェースは、指定した型のインタフェースをほかのインタフェースで使用する場合にメソッド宣言のシグニチャー型として使用します。クライアントの観点からは、CORBA Foo
オブジェクトのオブジェクト参照は、このインタフェースを実装します。
注:スタブは Foo
インタフェースを実装します (ここで各メソッドのコードを生成して引数を整列化してメソッドを呼び出し、引数の整列化を解除します)。
FooOperations
。サーバー側のマッピングで使用され、同じ場所にあるクライアントとサーバーに最適化された呼び出しを提供するメカニズムとして使用されます。サーバーの開発者は、オペレーションインタフェースで指示されたメソッドに対して実装を提供します。
注:サーバーの開発者は、通常、FooPOA
を拡張し、オペレーションインタフェースで提供されたメソッドに対して実装を提供します。
FooHelper
クラス。このクラスは、補助メソッド、特に Java のキャストに対応する CORBA の narrow()
を定義します。CORBA の動的呼び出しは request と呼ばれるオブジェクトを使用して、呼び出しに関するすべてを保持します。その中には、オブジェクト参照、オペレーション名、そのパラメータ、および結果の領域が含まれます。クライアントは、オペレーションを記述する request オブジェクトを構築し、その invoke
メソッドを呼び出します。このメソッドはスタブと同様の方法で要求をディスパッチします。invoke メソッドが返されると、その結果は request オブジェクトで利用できるようになります。
動的な呼び出しの鍵となるのは、自己記述型データを保持する要求機能です。この機能により、request オブジェクトは、パラメータに関係なく、任意のオペレーションの任意の呼び出しを代理実行できます。自己記述型データの各要素は、OMG IDL では Any
という特別な型を持っています。Any
は、タイプコード (その値は OMG IDL により定義されている) と値で構成され、タイプコードには値の型を指定します。