このドキュメントは J2SETM リリース用に更新されていません。 このドキュメントを J2SETM ドキュメントバンドルの一部としてダウンロードした場合は、Web サイト http://java.sun.com/j2se/1.4/docs/guide/idl/jidlClients.html を参照して、更新されているかどうかを確認してください。
更新されている場合、ここには以下のトピックが含まれています。
クライアントが 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
。org.omg.portable.IDLEntity、org.omg.CORBA.Object、およびオペレーションインタフェースを拡張したものです。 シグニチャーインタフェースは、指定した型のインタフェースを他のインタフェースで使用する場合にメソッド宣言のシグニチャー型として使用します。 クライアントの観点から述べると、CORBA Foo
オブジェクトのオブジェクト参照は、このインタフェースを実装します。
注: スタブは Foo
インタフェースを実装します。ここで各メソッドのコードを生成して引数を整列化してメソッドを呼び出し、引数の整列化を解除します。
FooOperations
。サーバ側のマッピングで使用され、同じ場所にあるクライアントとサーバに最適化された呼び出しを提供する機構として使用されます。 サーバの開発者は、オペレーションインタフェースで指示されたメソッドに対して実装を提供します。
注: サーバの開発者は、通常、FooPOA
を拡張し、オペレーションインタフェースで提供されたメソッドに対して実装を提供します。
FooHelper
クラス。このクラスは、補助メソッド、特に Java のキャストに対応する CORBA の narrow()
を定義します。
CORBA の動的呼び出しは「request」と呼ばれるオブジェクトを使用して、呼び出しに関するすべてを保持します。 その中には、オブジェクト参照、オペレーション名、そのパラメータ、および結果の領域が含まれます。 クライアントは、オペレーションを記述する request オブジェクトを構築し、その invoke
メソッドを呼び出します。このメソッドはスタブと同様の方法で要求をディスパッチします。 invoke メソッドが返されると、その結果は request オブジェクトで利用できるようになります。
動的な呼び出しの鍵となるのは、自己記述型データを保持する要求機能です。 この機能により、request オブジェクトは、パラメータに関係なく、任意のオペレーションの任意の呼び出しを代理実行できます。 自己記述型データの各要素は、OMG IDL では Any
という特別な型を持っています。 Any
は、タイプコード (その値は OMG IDL により定義されている) と値で構成され、タイプコードには値の型を指定します。
クライアント | サーバ | 例外 | 初期化 | ネームサービス
ホーム |
概念 |
プログラミング |
参照 |
チュートリアル |