J2SETM v.1.4 ドキュメント目次 J2SETM 1.3 と 1.4 での CORBA (Java IDL、RMI-IIOP) 機能の変更 Java RMI over IIOP ホームページ |
JavaTM Remote Method Invocation over Internet Inter-ORB Protocol (RMI-IIOP) は、JavaTM 2 Platform, Standard Edition (J2SETM) に含まれている機能です。 RMI プログラミングモデルを使うと、rmi API を介した CORBA サーバおよびアプリケーションのプログラミングが可能になります。 Java Remote Method Protocol (JRMP) をトランスポートとして使用して Java プログラミング言語だけで作業することも、Internet InterORB Protocol (IIOP) を使用して他の CORBA 対応プログラミング言語を併用して作業することもできます。
RMI-IIOP では Java CORBA Object Request Broker (ORB) と IIOP を利用するので、すべてのコードを Java プログラミング言語で書くことができ、アプリケーションを任意の CORBA 対応言語で書かれた別のアプリケーションに Internet InterORB Protocol (IIOP) 経由で接続するのに必要なコードを rmic コンパイラを使って生成することができます。 別の言語で書かれた CORBA アプリケーションを使用する場合、IDL は、-idl オプションを指定した rmic コンパイラを使って Java プログラミング言語インタフェースから生成できます。 IIOP スタブおよび Tie クラスを生成するには、rmic コンパイラを -iiop オプションを指定して使用します。 rmic の使い方については、「rmic - Java RMI コンパイラ」 を参照してください。
どんなときに RMI-IIOP を使用するべきか
RMI-IIOP は、Java プログラミング言語を使用しており、IIOP を背後のトランスポートとして使用して RMI インタフェースでプログラムを作成したい開発者向けです。 RMI-IIOP はさまざまな言語で実装される CORBA オブジェクトとの相互運用性を提供しますが、リモートインタフェースをあらかじめ Java RMI インタフェースとして定義しておく必要があります。 EJB コンポーネントのリモートオブジェクトモデルは RMI API ベースなので、Enterprise JavaBeansTM (EJBTM) を使うプログラマには特に有用です。
RMI-IIOP は、Java リモートメソッド呼び出し (RMI) の優れた機能を、ORBA の優れた機能と結び付けます。 RMI-IIOP は、開発者が完全に Java プログラミング言語の中だけで作業できるようにすることにより、分散アプリケーションの開発をスピードアップします。開発者は、リモートインタフェースを Java プログラミング言語で書くことができ、Java テクノロジと Java RMI API を使用するだけでリモートインタフェースを実装できます。
RMI-IIOP を使って Java プログラミング言語で書かれたテクノロジベースの分散アプリケーションを作成する場合、Interface Definition Language (IDL) やマッピングについて個別に学習する必要はありません。 インタフェースは OMG マッピングがサポートする他の言語や、ベンダーが提供するその言語の ORB で実装することができます。 またクライアントは、リモートの Java 技術ベースのインタフェースから派生した IDL を使って他の言語で書くこともできます。
RMI-IIOP では、開発者は、任意の Java オブジェクトをアプリケーションコンポーネント間を参照によっても値によっても受け渡しできるという柔軟性が得られます。
CORBA 同様、RMI-IIOP は、Object Management Group の多数のベンダーやユーザの参加によって定義されたオープン標準に基づいています。 CORBA と同じく、RMI-IIOP は、通信プロトコルとして Internet Inter-ORB Protocol (IIOP) を使用します。 IIOP は、C++、Smalltalk、その他の CORBA 対応言語で記述されたアプリケーションコンポーネントが、Java プラットフォーム上で実行されているコンポーネントと通信できるようにすることにより、従来のアプリケーションおよびプラットフォームとの統合を容易にします。
分散アプリケーションを開発するための別の選択肢として何があるか
JavaTM プログラミング言語を使ってプログラムを作成する開発者は、分散アプリケーションプログラムの作成方法を選択できます。
- JavaTM RMI テクノロジ - アプリケーションがすべて Java プログラミング言語で書かれている場合は、Java RMI テクノロジを使うことにより、異なる仮想マシン上および異なる物理マシン上の Java オブジェクト間での通信が可能になります。 IIOP オプションを指定しないで Java RMI テクノロジを使用すると、コード移植性の強さや、セキュリティ、およびガベージコレクションを活用することができます。
- JavaTM IDL テクノロジ - Java IDL テクノロジは、CORBA Interface Definition Language (IDL) で定義されたインタフェースに基づいて Java プログラミング言語でプログラムを記述したい CORBA プログラマ向けです。 これは「通常どおりの」CORBA プログラミングで、C++ や COBOL のような他の言語とまったく同じ方法で Java プラットフォームをサポートしています。
- Enterprise JavaBeansTM テクノロジ - Enterprise JavaBeansTM (EJBTM) テクノロジは、Java 2 Platform, Enterprise Edition に含まれている機能です。 EJB コンポーネントは、分散オブジェクトモデルとして Java RMI テクノロジおよび IDL テクノロジを使用し、分散トランザクションモデルとして Java Transaction Service (JTS) を使用します。 異機種サーバ環境との EJB コンポーネントの相互運用のために RMI-IIOP プロトコルを使用して Enterprise JavaBeans コンポーネントを実装した場合は、EJB アーキテクチャから CORBA への標準マッピングにより、マルチベンダーの ORB、ほかの EJB サーバ、および Java プログラミング言語以外のプログラミング言語で書かれた CORBA クライアントとの相互運用が可能になります。 EJB サーバと CORBA クライアントを使用するサンプルアプリケーションについては、「Enterprise JavaBeans コンポーネントおよび CORBA クライアント」を参照してください。
リモートインタフェースのリモートオブジェクト実装を定義する Java プログラムに対して rmic -iiop -poa というコマンドを実行すると、継承が org.omg.CORBA_2_3.portable.ObjectImpl (-poa オプションなしでコマンドを実行した場合) から org.omg.PortableServer.Servant に変わります。
Java プログラミング言語では、Portable Object Adaptor (POA) ベースの Dynamic Skeleton Interface (DSI) サーバントは標準の DynamicImplementation クラスから継承され、そのクラスは Servant クラスから継承されます。 ネイティブな Servant 型は、POA 用の PortableServer モジュールによって定義されます。 Java プログラミング言語では、Servant 型は、org.omg.PortableServer.Servant クラスにマッピングされています。 これはあらゆる POA サーバント実装の基底クラスとなり多数のメソッドを提供します。これらのメソッドはアプリケーションプログラマが呼び出すだけではなく、POA 自身からも呼び出され、場合によってはサーバントの動作を制御するためにユーザがオーバーライドすることもあります。 POA の詳細については、CORBA/IIOP 2.3.1 Specification, Chapter 11, formal/99-10-07 を参照してください。
OMG は、CORBA および IIOP 関連の情報すべての公式提供元です。 CORBA 2.3.1 の仕様は、formal/99-10-07 で電子的なデータとして入手できます。 CORBA 仕様の URL は変更されることがあります。 リンクが壊れている場合は、http://www.omg.org にアクセスして仕様を検索してください。
Java プラットフォームのこのリリースで実装されている仕様についての詳細は、「準拠に関するドキュメント」を参照してください。
質問がある場合は、Java IDL テクノロジのユーザサポートフォーラム (http://forum.java.sun.com) をご利用ください。 コメントの送付先は rmi-iiop@sun.com です。
Copyright © 2002 Sun Microsystems, Inc. All Rights Reserved.
コメントの送付先: rmi-iiop@sun.com |