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 JNDI プログラマーズ ガイド』を参照してください。これらの技術はどちらも RMI-IIOP にとってきわめて重要なものなので、RMI-IIOP アプリケーションの構築を始める前に、これらの技術の一般的な概念についてよく理解しておくことを強くお勧めします。
WebLogic Server 8.1 での RMI-IIOP 実装の機能は以下のとおりです。
標準 IIOP プロトコルを使用して Java RMI クライアントを WebLogic Server に接続できる。
CORBA/IDL クライアント (C++ で記述されたものを含む) を WebLogic Server に接続できる。
WebLogic Server と Tuxedo クライアントの間で相互運用できる。
WebLogic Server をホストとする EJB に、さまざまなクライアントを接続できる。
このマニュアルでは、RMI および RMI-IIOP を用いるさまざまなクライアント タイプに応じたアプリケーションの作成方法について説明します。RMI-IIOP アプリケーションをどのように開発するかは、どのようなサービスやクライアントを統合するかによって決まります。
図 1-1 は、IIOP を使用するオブジェクトに対する RMI オブジェクトの関係を示しています。
図 1-1 RMI オブジェクトの関係
RMI (Java) クライアント使用型 RMI-IIOP のサポート
標準 IIOP プロトコルを活用して、RMI-IIOP を Java/RMI クライアントで使用することができます。WebLogic Server 8.1 では、新しい小規模クライアント jar に基づいた新しい J2EE アプリケーション クライアント (シン クライアント) など、Java-to-Java 環境で RMI-IIOP を使用する複数の方法を用意しています。この新しいシン クライアントを使用するには、クライアント サイドの CLASSPATH に (WL_HOME/server/lib
にある) wlclient.jar
を含める必要があります。RMI-IIOP クライアントの選択肢の詳細については、「RMI-IIOP プログラミング モデルの概要」を参照してください。
Tuxedo クライアント使用型 RMI-IIOP のサポート
WebLogic Server 8.1 は 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 8.1 と WebLogic Server 6.x および 7.0 の間の相互運用性は、以下のシナリオでサポートされています。
サーバ間の相互運用性
次の表に、2 つの WebLogic Server インスタンス間の相互運用性を実現するためにサポートされるオプションを示します。
表 1-1 WebLogic Server 間の相互運用性
サーバ
(受信側)
サーバ (発信側)
|
WebLogic Server 6.0
|
WebLogic Server 6.1 SP2 および 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 および SP2 以降のサービス パック
|
HTTP
|
RMI/T3
RMI/IIOP3
HTTP
Web サービス
|
RMI/T3
RMI/IIOP4
HTTP
Web サービス
|
RMI/T35
RMI/IIOP6
HTTP
Web サービス7
|
WebLogic Server 7.0
|
HTTP
|
RMI/T3
RMI/IIOP8
HTTP
|
RMI/T3
RMI/IIOP9
HTTP
Web サービス
|
RMI/T3
RMI/IIOP10
HTTP
Web サービス11
|
WebLogic Server 8.1
|
HTTP
|
RMI/T3
RMI/IIOP12
HTTP
|
RMI/T3
RMI/IIOP13
HTTP
Web サービス14
|
RMI/T3
RMI/IIOP
HTTP
Web サービス
|
Sun JDK ORB クライアント15
|
RMI/IIOP16
|
RMI/IIOP17
|
RMI/IIOP18
|
RMI/IIOP19
|
1.
「サーバ (受信側)」のバージョンから生成されたポータブル クライアント スタブを使用する必要があります。
2.
「サーバ (受信側)」のバージョンから生成されたポータブル クライアント スタブを使用する必要があります。
3.
クラスタ化された URL はサポートされません。また、トランザクションの伝播はありません。
4.
クラスタ化された URL はサポートされません。また、トランザクションの伝播はありません。
5.
6.1 SP4 より前のリリースでは、マーシャリング中の例外に関する確認済みの問題があります。
6.
クラスタ化された URL はサポートされません。また、トランザクションの伝播はありません。 マーシャリング中の例外に関する確認済みの問題があります。
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/T34
HTTP
Web サービス5
|
WebLogic Server 7.0
|
HTTP
|
RMI/T3
RMI/IIOP6
HTTP
|
RMI/T3
RMI/IIOP7
HTTP
Web サービス
|
RMI/T3
RMI/IIOP8
HTTP
Web サービス9
|
WebLogic Server 8.1
|
HTTP
|
RMI/T3
RMI/IIOP10
HTTP
|
RMI/T3
RMI/IIOP11
HTTP
Web サービス12
|
RMI/T3
RMI/IIOP
HTTP
Web サービス
|
Sun JDK ORB クライアント13
|
RMI/IIOP14
|
RMI/IIOP15
|
RMI/IIOP16
|
RMI/IIOP17
|
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. クラスタリングはありません。トランザクションの伝播はありません。