Internet InterORB Protocol (IIOP) の要求および応答の交換は、 すべてクライアント・サイドの ORB とサーバー・サイドの ORB から構成されています。 IIOP を使用するアプリケーションは、 クライアント・サイドのオブジェクト・リクエスト・ブローカー (ORB) と 通信できるよう、正しくプログラムされていることが重要です。
IIOP を使用して要求および応答の交換を処理するアプリケーションが、 クライアント・サイドのオブジェクト・リクエスト・ブローカー (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 関数を呼び出し、指定されたサービスへの初期参照を取得します。
J2EE アプリケーションの場合、以下のいずれかの方法を使用することができます。ただし、クライアント・アプリケーションで同じ ORB インスタンスを使用する場合は、 Java Naming and Directory Interface (JNDI) による方法を使用することを強くお勧めします。 こうすることで、異なる 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 コンポーネントによって共用されています。
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 メソッドは使用されなくなりました。
また、ORB インスタンスは、異なる J2EE アプリケーションのアプリケーション・コンポーネント間では 共有しないでください。
この製品で 使用される 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 変数に組み込まれていることも確認してください。