JavaTM IDL/JavaTM RMI over IIOP の制限 |
このドキュメントでは、JavaTM 2 Platform, Standard Edition (J2SETM) のこのリリースの JavaTM IDL と JavaTM RMI over IIOP テクノロジに関するいくつかの制限について説明します。 制限の内容を以下に示します。J2SE 1.4 での CORBA サポートの公式仕様では、Java IDL と Java RMI over IIOP テクノロジの実装の、OMG 仕様に対する準拠の概要について説明しています。
制限:
- JavaTM SDK バージョンの相互運用性
J2SETM 1.3.x クライアントが RMI-IIOP を使用して J2SE 1.4 サーバと通信しているときに、チェックされない RemoteException がサーバによってスローされると、クライアントがハングアップします。 同様に、サーバが J2SE 1.3.x を使用し、クライアントが J2SE 1.4 を使用している場合、クライアントは、マイナーコード 0 の CORBA UNKNOWN 例外を受け取ります。
この問題については、OMG の Java to IDL RTF の Issue 4795 http://cgi.omg.org/issues/java2idl-rtf.html#Issue4795 で現在解決のための作業が行われています。
- 複数のプロファイルを含む IOR
IOR が複数のプロファイルを含んでいる場合、最初のプロファイルが呼び出しに使用されます。
- 持続サーバでの複数の ORB の禁止
J2SE プラットフォームのこのリリースでは、複数の ORB インスタンスを持続サーバ内に置くことはできません。 Java RMI over IIOP API を使用して JNDI の InitialContext() をインスタンス化すると、ORB が作成されます。 この設定で複数の ORB が作成されないようにするには、java.naming.ORB システムプロパティをすでに初期化されている ORB に設定します。
- ローカルで最適化されたスタブ
IDL-to-Java コンパイラ
idlj
は、ローカルで最適化されたスタブを生成しません。 別の IDL-to-Java コンパイラによって生成されたローカルで最適化されたスタブを Sun ORB とともに使用すると、Sun ORB は、ローカル起動用のポータブルインタセプタを起動しません。 この問題は、OMG の問題として現在解決のための作業が行われています。rmic コンパイラはローカルで最適化されたスタブを生成しますが、このコンパイラの javax.rmi.CORBA.Util delegate の実装は、isLocal に対して常に false を返します。 その結果として、スタブはローカルの最適化を使用しません。
J2SE v1.4 で提供されている Java CORBA ORB は、クライアントとサーバが同じ VM 内で実行されていることを検出すると、ローカルで最適化されたトランスポートを使用します。
- 単一スレッドの POA ポリシー
CORBA 2.3.1 の仕様では、ポータブルオブジェクトアダプタ (POA) のスレッドポリシーに対して 2 つの選択肢があります。 すなわち、ORB 制御モデルと単一スレッドモデルです。 J2SE v1.4 は、単一スレッドモデルをサポートしていません。