このドキュメントは、今回のリリースでは更新されませんでした。
更新されている場合、ここには次のトピックが含まれています。
クライアントが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により定義されている)と値で構成され、タイプ・コードには値の型を指定します。