WebSphere Application Server Network Deployment, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

             目次と検索結果のパーソナライズ化

Java オブジェクト・リクエスト・ブローカー (ORB) サービスのためのクライアント・サイド・プログラミングのヒント

Internet InterORB Protocol (IIOP) の要求および応答の交換は、 すべてクライアント・サイドの ORB とサーバー・サイドの ORB から構成されています。 IIOP を使用するアプリケーションは、 クライアント・サイドのオブジェクト・リクエスト・ブローカー (ORB) と 通信できるよう、正しくプログラムされていることが重要です。

IIOP を使用して要求および応答の交換を処理するアプリケーションが、 クライアント・サイドのオブジェクト・リクエスト・ブローカー (ORB) と 通信できるように、正しくプログラムされているかどうかを確認するには、 以下のヒントが役に立ちます。




関連資料
オブジェクト・リクエスト・ブローカー: 学習用リソース
オブジェクト・リクエスト・ブローカー・サービス設定
関連情報
オブジェクト・リクエスト・ブローカーの管理

サービスへの初期参照の解決

クライアント・アプリケーションでは、 ORBInitRef および ORBDefaultInitRef プロパティーを使用して、ネーミングなどのサービスを 見つけるために、Java ORB サービスによって使用されるネットワーク・ロケーションを構成します。設定すると、 これらのプロパティーは、以下の例のように、ORB を初期化するときに使用されるパラメーターに組み込まれます。
org.omg.CORBA.ORB.init(java.lang.String[] args, 
                       java.util.Properties props)

これらのプロパティーは、クライアント・コード内またはコマンド行の引数で設定することができます。複数の ORBInitRef プロパティー設定 (それぞれのサービスごとに 1 つ) を使用すると、 複数のサービス・ロケーションを指定することができますが、指定できる単一の値は ORBDefaultInitRef のみです。 2 つのプロパティー、および ORB が、 サービスを探す際に使用する優先順位の詳細に ついては、CORBA/IIOP の仕様書を参照してください。

クライアント・コードで設定する場合、これらのプロパティーは、それぞれ、com.ibm.CORBA.ORBInitRef.service_name および com.ibm.CORBA.ORBDefaultInitRef です。例えば、ポート 2809 の sample.server.com にある ネーミング・サービス (NameService) を指定する場合は、 com.ibm.CORBA.ORBInitRef.NameService プロパティーを corbaloc::sample.server.com:2809/NameService に設定します。

コマンド行の引数を使用して 設定する場合、これらのプロパティーはそれぞれ、-ORBInitRef および -ORBDefaultInitRef です。前に指定したのと同じネーミング・ サービスを見つける場合、以下の Java コマンドを使用します。

ORB でサポートされるサービスに対してこれらのプロパティーを設定した後、 Java 2 Platform, Enterprise Edition (J2EE) アプリケーションは、 CORBA/IIOP 仕様の定義に従って、ORB で resolve_initial_references 関数を呼び出し、指定されたサービスへの初期参照を取得します。

ORB インスタンスの取得に適した API

J2EE アプリケーションの場合、以下のいずれかの方法を使用することができます。ただし、クライアント・アプリケーションで同じ ORB インスタンスを使用する場合は、 Java Naming and Directory Interface (JNDI) による方法を使用することを強くお勧めします。 こうすることで、異なる ORB インスタンスが使用されるときに発生する可能性のある、意図しない矛盾を回避できます。

JNDI による方法: J2EE アプリケーション (エンタープライズ Bean、J2EE クライアントおよびサーブレットを含む) の場合、 以下の例のように、JNDI InitialContext オブジェクトを作成して、 名前 java:comp/ORB で ORB のルックアップを行うことによって、ORB インスタンスを取得することができます。
javax.naming.Context ctx = new javax.naming.InitialContext();
org.omg.CORBA.ORB orb = 
   (org.omg.CORBA.ORB)javax.rmi.PortableRemoteObject.narrow(ctx.lookup("java:comp/ORB"), 
                                                            org.omg.CORBA.ORB.class);

JNDI を使用して取得された ORB インスタンスは、singleton オブジェクトであり、 同じ Java 仮想マシン・プロセスで実行されているすべての J2EE コンポーネントによって共用されています。

CORBA による方法: シン・クライアント・アプリケーションは J2EE コンテナー内では実行されないため、JNDI インターフェースでは ORB のルックアップを行うことができません。このような場合、以下のように、CORBA プログラミング・インターフェースを使用して、ORB インスタンスを取得することができます。
java.util.Properties props = new java.util.Properties();
java.lang.String[] args = new java.lang.String[0];
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, props);

JNDI による方法とは異なり、CORBA 仕様の場合、ORB.init メソッドが呼び出されるたびに 新規 ORB インスタンス が作成されるよう要求されます。 ORB のデフォルト設定を変更する必要がある 場合は、ORB.init メソッド呼び出しに 渡される Properties オブジェクトに、ORB プロパティー設定を追加することができます。

この製品の以前のリリースでサポートされていた、 com.ibm.ejs.oa.EJSORB.getORBinstance メソッドは使用されなくなりました。

J2EE アプリケーション・コンポーネント間での ORB インスタンスの共用に関する API の制限

パフォーマンス上の理由から、J2EE アプリケーション内の複数のコンポーネント間で、単一の ORB インスタンスを共用すると有益な場合があります。 J2EE 仕様 (バージョン 1.3) で要求されているように、すべての Web コンテナーおよび EJB コンテナーが、 java:comp/ORB として、JNDI ネーム・スペースに ORB インスタンスを提供しています。 各コンテナーでは、アプリケーション・コンポーネント間でこのインスタンスを共用することができますが、必ずしも共用する必要はありません。アプリケーション・コンポーネント間の適切な独立性を保つために、アプリケーション・コードは、以下の制限に準拠している必要があります。
  • ORB シャットダウンを呼び出したり、メソッドを破棄したりしないでください。
  • org.omg.CORBA_2_3.ORB の register_value_factory メソッド、 または unregister_value_factory メソッドを 呼び出さないでください。

また、ORB インスタンスは、異なる J2EE アプリケーションのアプリケーション・コンポーネント間では 共有しないでください。

IBM Developer Kit に同梱されている rmic および idlj の使用

この製品で 使用される Java Runtime Environment (JRE) には、ツール rmic および idlj が含まれています。 これらのツールは、CORBA/IIOP プロトコル用の Java 言語バインディングを生成する際に使用します。

製品のインストール時、 これらのツールは app_server_root/java/ibm_bin ディレクトリーにインストールされます。 この製品と同時にインストールされる IBM Developer Kit 以外の、 $JAVA_HOME/bin ディレクトリーにある Java Development Kit 内の各ツールのバージョンは、この製品とは互換性がありません。

この製品をインストールすると、$PATH 検索順序に app_server_root/java/ibm_bin ディレクトリーが組み込まれ、IBM によって提供される rmic および idlj スクリプトを使用できるようになります。 このスクリプトは、JRE 標準の app_server_root/java/bin ディレクトリーではなく、app_server_root/java/ibm_bin ディレクトリーに入っているため、IBM が提供していない JRE に 保守を適用する際に、上書きされることはありません。

rmic および idlj ツールに加えて、JRE にはインターフェース定義言語 (IDL) のファイルも組み込まれています。 このファイルはオブジェクト管理グループ (OMG) が定義するファイルに基づくもので、選択した ORB インターフェースの IDL 定義を必要とするアプリケーションで使用できます。 このファイルは app_server_root/java/ibm_lib ディレクトリーにあります。

rmic または idlj ツールのいずれかを使用する前に、app_server_root/java/ibm_bin ディレクトリーが、環境内の適切な PATH 変数検索順序に組み込まれていることを確認してください。 アプリケーションが app_server_root/java/ibm_lib ディレクトリーにある IDL ファイルを使用する場合は、そのディレクトリーが PATH 変数に組み込まれていることも確認してください。

参照トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 10:13:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/rorb_orbprog.html