WebLogic RMI over IIOP プログラマーズ ガイド
|
RMI over IIOP の概要
以下の各節では、RMI over IIOP を概観します。
RMI および RMI over IIOP とは
RMI-IIOP を理解するには、まず RMI を実務レベルで理解している必要があります。RMI (Remote Method Invocation) は、Java での分散オブジェクト コンピューティングの標準規格です。RMI を使用すると、アプリケーション側では、ネットワーク内の別の場所に存在するオブジェクトへの参照を取得したあと、そのオブジェクトのメソッドを、そのオブジェクトがあたかもクライアントの仮想マシンにローカルに存在するかのように呼び出すことができます。RMI は、分散 Java アプリケーションが複数の Java 仮想マシン上でどのように動作するかを規定するものです。RMI は Java で記述されており、Java プログラム専用のものです。
RMI over IIOP は、IIOP プロトコルを介して動作するように RMI を拡張したものです。この拡張には役に立つメリットが 2 つあります。まず、Java-to-Java パラダイムでは、これによって、標準 IIOP (Internet Interop-Orb-Protocol) に対応したプログラムを作成できるようになります。一方、Java 単独の環境以外で作業している場合には、この拡張によって、Java プログラムから CORBA (Common Object Request Broker Architecture) クライアントとやり取りし、CORBA オブジェクトを実行できるようになります。CORBA クライアントは、さまざまな言語 (C++ を含む) で記述することができ、インタフェース定義言語 (IDL : Interface-Definition-Language) を用いてリモート オブジェクトとやり取りすることができます。
WebLogic RMI-IIOP の概要
RMI over IIOP は RMI プログラミング モデルに基づいたものであり、また、それほどではないにせよ、JNDI (Java Naming and Directory Interface) にも基づいています。WebLogic RMI と JNDI の詳細については、『WebLogic RMI プログラマーズ ガイド』の「WebLogic RMI の実装」と『WebLogic JNDI プログラマーズ ガイド』を参照してください。これらの技術はどちらも RMI-IIOP にとってきわめて重要なものなので、RMI-IIOP アプリケーションの構築を始める前に、これらの技術の一般的な概念についてよく理解しておくことを強くお勧めします。
WebLogic Server 7.0 での RMI-IIOP 実装の機能は以下のとおりです。
- 標準 IIOP プロトコルを使用して Java RMI クライアントを WebLogic Server に接続できる。
- CORBA/IDL クライアント (C++ で記述されたものを含む) を WebLogic Server に接続できる。
- WebLogic Server と Tuxedo クライアントの間で相互運用できる。
- WebLogic Server をホストとする EJB に、さまざまなクライアントを接続できる。
このマニュアルでは、RMI および RMI-IIOP を用いるさまざまなクライアント タイプに応じたアプリケーションの作成方法について説明します。RMI-IIOP アプリケーションをどのように開発するかは、どのようなサービスやクライアントを統合するかによって決まります。
以下の図は、IIOP を用いた RMI オブジェクト関係を示しています。
RMI (Java) クライアント使用型 RMI-IIOP のサポート
標準 IIOP プロトコルを活用して、RMI-IIOP を Java/RMI クライアントで使用することができます。JDK のリリース 1.3.1 ではこの機能が強化され、Java-to-Java の環境において RMI-IIOP で手軽に WebLogic Server 7.0 を使用できます。また、完全にクラスタ化可能な RMI-IIOP アプリケーションを開発できる、「ファット」RMI-IIOP RMI クライアントも導入されました。この新しい WebLogic RMI-IIOP RMI クライアントを使用するには、クライアント サイドの CLASSPATH にweblogic.jar (WL_HOME/server/lib にある) を含め、-Dweblogic.system.iiop.enableClient=true コマンド ライン オプションを使用してクライアントを起動する必要があります。
Tuxedo クライアント使用型 RMI-IIOP のサポート
WebLogic Server 7.0 は WebLogic Tuxedo Connector の実装も備えています。これは、Tuxedo サーバとの相互運用を可能にする基盤技術です。WebLogic Tuxedo Connector を使用すると、Tuxedo を ORB として活用したり、WebLogic Server 上で開発したアプリケーションと従来の Tuxedo システムを統合することができます。 詳細については、「WebLogic Tuxedo Connector」ページを参照してください。
CORBA/IDL クライアント使用型 RMI-IIOP のサポート
開発者にとっては、CORBA/IDL クライアントから J2EE サービスにアクセスできることが必要です。しかし、Java と CORBA は非常に異なるオブジェクト モデルに基づいています。このため、この 2 つのプログラミング パラダイムに基づいて作成されたオブジェクト間でのデータ共有は、最近までは、Remote と CORBA のプリミティブ データ型だけに限られていました。CORBA の構造体も Java のオブジェクトも、異なるオブジェクト間で簡単にやり取りすることはできませんでした。この制限を解消するために、Object Management Group (OMG) によって Objects-by-Value 仕様が策定されました。この仕様では、Java オブジェクト モデルを CORBA/IDL プログラミング モデルにエクスポートでき、Java、CORBA の 2 つのモデル間での複合データ型の交換が可能になります。Objects-by-Value 仕様が正しく実装されている CORBA ORB を使用すれば、WebLogic Server でも Objects-by-Value をサポートできます。
プロトコルの互換性
WebLogic Server 7.0 と WebLogic Server 6.x および 8.1 の相互運用性は、以下のシナリオでサポートされています。
サーバ間の相互運用性
次の表は、2 つの WebLogic Server インスタンス間で相互運用を実現するために利用できるオプションを示しています。
表1-1 WebLogic Server 間の相互運用性
この
サーバへ
このサーバから
|
WebLogic Server 6.0
|
WebLogic Server 6.1 SP2 以降のサービス パック
|
WebLogic Server 7.0
|
WebLogic Server 8.1
|
WebLogic Server 6.0
|
RMI/T3
HTTP
|
HTTP
|
HTTP
Web サービス 1.
|
HTTP
Web サービス 2.
|
WebLogic Server 6.1 SP2 以降のサービス パック
|
HTTP
|
RMI/T3
RMI/IIOP 3.
HTTP
Web サービス
|
RMI/T3
RMI/IIOP 4.
HTTP
Web サービス
|
RMI/T3 5.
RMI/IIOP 6.
HTTP
Web サービス 7.
|
WebLogic Server 7.0
|
HTTP
|
RMI/T3
RMI/IIOP 8.
HTTP
|
RMI/T3
RMI/IIOP 9.
HTTP
Web サービス
|
RMI/T3
RMI/IIOP 10.
HTTP
Web サービス 11.
|
WebLogic Server 8.1
|
HTTP
|
RMI/T3
RMI/IIOP 12.
HTTP
|
RMI/T3
RMI/IIOP 13.
HTTP
Web サービス 14.
|
RMI/T3
RMI/IIOP
HTTP
Web サービス
|
Sun JDK ORB クライアント 15.
|
RMI/IIOP 16.
|
RMI/IIOP 17.
|
RMI/IIOP 18.
|
RMI/IIOP 19.
|
1「このサーバへ」のバージョンで生成されたポータブル クライアント スタブを使用する必要があります。
2「このサーバへ」のバージョンで生成されたポータブル クライアント スタブを使用する必要があります。
3 クラスタ化された URL のサポートはありません。トランザクションの伝播はありません。
4 クラスタ化された URL のサポートはありません。トランザクションの伝播はありません。
5 クラスタ化された URL のサポートはありません。トランザクションの伝播はありません。 マーシャリング中の例外に関する確認済みの問題があります。
6 トランザクションの伝播なし。例外マーシャリングの確認済みの問題。
7 「このサーバへ」のバージョンで生成されたポータブル クライアント スタブを使用する必要があります。
8 クラスタ化された URL のサポートはありません。トランザクションの伝播はありません。
9 クラスタ化された URL のサポートはありません。
10 クラスタ化された URL のサポートはありません。
11 「このサーバへ」のバージョンで生成されたポータブル クライアント スタブを使用する必要があります。
12 クラスタ化された URL のサポートはありません。トランザクションの伝播はありません。 マーシャリング中の例外に関する確認済みの問題があります。
13クラスタ化された URL のサポートはありません。トランザクションの伝播はありません。
14 「このサーバへ」のバージョンで生成されたポータブル クライアント スタブを使用する必要があります。
15このオプションでは、WebLogic Server でホストされているアプリケーション内から JDK ORB へのダイレクトな呼び出しが行われます。
16 JDK 1.3.x のみ。 クラスタ化なし。 トランザクションの伝播なし。
17 JDK 1.3.x のみ。 クラスタ化なし。 トランザクションの伝播なし。
18 JDK 1.3.x または 1.4.1。 クラスタ化なし。 トランザクションの伝播なし。
19 JDK 1.3.x または 1.4.1。 クラスタ化なし。 トランザクションの伝播なし。
クライアントとサーバ間の相互運用性
次の表は、スタンドアロンの Java クライアント アプリケーションと WebLogic Server インスタンスの間で相互運用性を実現するために利用できるオプションを示しています。
表1-2 クライアントとサーバ間の相互運用性
この
サーバへ
このクライアント (スタンドアロン) から
|
WebLogic Server 6.0
|
WebLogic Server 6.1
|
WebLogic Server 7.0
|
WebLogic Server 8.1
|
WebLogic Server 6.0
|
RMI
HTTP
|
HTTP
|
HTTP
Web サービス 1.
|
HTTP
Web サービス 2.
|
WebLogic Server 6.1
|
HTTP
|
RMI/T3
HTTP
Web サービス
|
RMI/T3
HTTP
Web サービス 3.
|
RMI/T3 4.
HTTP
Web サービス 5.
|
WebLogic Server 7.0
|
HTTP
|
RMI/T3
RMI/IIOP 6.
HTTP
|
RMI/T3
RMI/IIOP 7.
HTTP
Web サービス
|
RMI/T3
RMI/IIOP 8.
HTTP
Web サービス 9.
|
WebLogic Server 8.1
|
HTTP
|
RMI/T3
RMI/IIOP 10.
HTTP
|
RMI/T3
RMI/IIOP 11.
HTTP
Web サービス 12.
|
RMI/T3
RMI/IIOP
HTTP
Web サービス
|
Sun JDK ORB クライアント 13.
|
RMI/IIOP 14.
|
RMI/IIOP 15.
|
RMI/IIOP 16.
|
RMI/IIOP 17.
|
1 「このサーバへ」のバージョンで生成されたポータブル クライアント スタブを使用する必要があります。
2 「このサーバへ」のバージョンで生成されたポータブル クライアント スタブを使用する必要があります。
3 「このサーバへ」のバージョンで生成されたポータブル クライアント スタブを使用する必要があります。
4 6.1 SP4 より前のリリースで例外マーシャリングに確認済みの問題があります。
5 「このサーバへ」のバージョンで生成されたポータブル クライアント スタブを使用する必要があります。
6 クラスタおよびフェイルオーバのサポートはありません。 トランザクションの伝播はありません。
7 クラスタおよびフェイルオーバのサポートはありません。
8 クラスタおよびフェイルオーバのサポートはありません。
9 「このサーバへ」のバージョンで生成されたポータブル クライアント スタブを使用する必要があります。
10 クラスタおよびフェイルオーバのサポートはありません。トランザクションの伝播はありません。 マーシャリング中の例外に関する確認済みの問題があります。
11 クラスタおよびフェイルオーバのサポートはありません。トランザクションの伝播はありません。 マーシャリング中の例外に関する確認済みの問題があります。
12 「このサーバへ」のバージョンで生成されたポータブル クライアント スタブを使用する必要があります。
13 このオプションでは、クライアント アプリケーション内から JDK ORB へのダイレクトな呼び出しが行われます。
14 JDK 1.3.x のみ。 クラスタ化なし。 トランザクションの伝播なし。
15 JDK 1.3.x のみ。 クラスタ化なし。 トランザクションの伝播なし。
16 JDK 1.3.x または 1.4.1。 クラスタ化なし。 トランザクションの伝播なし。
17 JDK 1.3.x または 1.4.1。 クラスタ化なし。 トランザクションの伝播なし。