このドキュメントでは、Java 2 Platform Standard Edition (J2SE)のこのリリースのJava IDLとJava RMI over IIOPテクノロジに関するいくつかの制限について説明します。制限の内容を次に示します。
「J2SE 5.0でのCORBAサポートの公式仕様」では、Java IDLとJava RMI over IIOPテクノロジの実装で準拠するOMG仕様の概要について説明します。
制限:
Java SDKバージョンの相互運用性 J2SE 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 4795http: //www.omg.org/issues/java2idl-rtf.html#Issue4795で現在解決のための作業が行われています。
J2SE 1.4.1以上の場合: 一方の側がJ2SE 1.3.1.05を使用し、他方の側がJ2SE 1.4.1以上を使用している場合、この種の通信は正しく機能します。
複数のプロファイルを含むIOR IORが複数のプロファイルを含んでいる場合、最初のプロファイルが呼出しに使用されます。
持続サーバーでの複数のORBの禁止 Java SEプラットフォームのこのリリースでは、複数のORBインスタンスを持続サーバー内に置くことはできません。Java RMI over IIOP APIを使用してJNDIのInitialContext()をインスタンス化すると、ORBが作成されます。この設定で複数のORBが作成されないようにするには、java.naming.ORBシステム・プロパティをすでに初期化されているORBに設定します。
ローカルで最適化されたスタブ・ローカルに最適化されたスタブ(idlj以外のIDL-to-Javaコンパイラによって生成されたローカル最適化を含むスタブ)は、J2SE 1.4以上のORBで使用することができます。ただし、ローカルに最適化されたスタブを取るとき、ポータブル・インタセプタは呼び出されません。この現象は、OMGのIDLからJava言語へのマッピングに伴う問題が原因で、OMG問題4701として解決のための作業が行なわれています。
J2SE 1.4以上のrmicコンパイラに-iiopオプションを指定して使用すると、ローカルに最適化されたスタブが生成されます。しかし、J2SE 1.4以上でjavax.rmi.CORBA.Utilを実装すると、isLocalに対して常にfalseを返します。その結果、スタブはローカルの最適化を使用しません。この現象は、OMGのJavaからIDL言語へのマッピングに伴う問題が原因で、OMG問題3754として解決のための作業が行なわれています。
J2SE 1.4以上のORBは、クライアントとサーバーが同じORBを共有して実行されていることを検出すると、ローカルに最適化されたトランスポートをJava IDLとJava RMI-IIOPの両方に対して使用します。
単一スレッドのPOAポリシー CORBA 2.3.1の仕様では、ポータブル・オブジェクト・アダプタ(POA)のスレッド・ポリシーに対して2つの選択肢があります。すなわち、ORB制御モデルと単一スレッド・モデルです。J2SE 5.0は、単一スレッド・モデルをサポートしていません。
RMI-IIOPストリーム形式バージョン2あるクラスのスーパー・タイプがカスタム整列化されたクラスに発展し、オプションのカスタム・データを書き出すようになった場合、そのクラスをJ2SE 1.3.xやJ2SE 1.4以上の間でやり取りすることはできません。その一例として、J2SE 1.4以上のjava.util.Calendarは、J2SE 1.3.xに送り返すことができません。