• 検索結果がありません。

この章では、独自のRemote Method Invocation(RMI)/Oracle RMI(ORMI)プロトコルを 使用した、OC4Jコンテナ間でのEJBの相互起動を可能にする、Oracle Application Server

Containers for J2EE(OC4J)サポートについて説明します。

この章には、次の項目が含まれます。

RMI/ORMIの概要

RMI用のOC4Jの構成

HTTPを介したORMIトンネリングの構成

RMI/ORMI の概要 の概要 の概要 の概要

Java Remote Method Invocation(RMI)を使用すると、分散Javaベース間アプリケーションを

作成できます。この種のアプリケーションでは、リモートJavaオブジェクトのメソッドを、異 なるホスト上にあるものも含め、他のJava仮想マシン(JVM)から起動できます。

デフォルトでは、OC4JのEJBはOracle Remote Method Invocation(ORMI)プロトコルを介 してRMIコールをやり取りします。ORMIは、OC4J向けに最適化されたOracle独自のプロト コルです。

RMI/IIOPを使用するようにEJBを変換し、様々なEJBコンテナ間でEJBが相互に起動できる

ようにすることもできます。第6章「J2EEの相互運用性」を参照してください。

ORMI 拡張機能 拡張機能 拡張機能 拡張機能

ORMIはOC4J向けに拡張されており、次の機能が用意されています。

RMIメッセージ・スループットの増大

スレッド化のサポートの拡張

同じ場所に配置されているオブジェクトのサポート

RMI メッセージ・スループットの増大 メッセージ・スループットの増大 メッセージ・スループットの増大 メッセージ・スループットの増大

ORMIを使用すると、OC4Jは高トランザクション・レートで処理できます。これは、Oracle

のSpecJ Application Serverベンチマークに反映されています。次のURLを参照してください。

http://www.spec.org/

一方向ORMIは、IIOPメッセージよりも小さいメッセージを使用して、このパフォーマンスを 達成します。メッセージが小さいため、送受信用の帯域幅が小さく、エンコードとデコードの 処理時間が短縮されます。ORMIのメッセージ・サイズは、クライアントとサーバーの間でや り取りされる状態情報の量を最適化することで、さらに小さくなります。ORMIを使用すると、

一部の状態はサーバー上でキャッシュされるため、RMIコールのたびに送信する必要がありま せん。フェイルオーバー時には、クライアント・コードにより新規サーバーに必要な状態情報 がすべて再送されるため、これはステートレスであるというRMI要件に違反しません。

スレッド化のサポートの拡張 スレッド化のサポートの拡張 スレッド化のサポートの拡張 スレッド化のサポートの拡張

ORMIはOC4Jのスレッド化モデルと密結合され、そのキューイング、プーリングおよびス テージング機能を最大限に利用します。

ORMIはクライアントごとに1つずつスレッドを使用します。マルチスレッド化されたクライ アントの場合、OC4Jは1つの接続を介して各コールを多重化します。ただし、OC4Jは各コー ルをシリアライズしないため、複数のスレッドが相互をブロックすることはありません。

この機能により、各クライアント(単一スレッドまたはマルチスレッド)からリモート・サー バーに対する接続は必ず1つになります。

同じ場所に配置されているオブジェクトのサポート 同じ場所に配置されているオブジェクトのサポート 同じ場所に配置されているオブジェクトのサポート 同じ場所に配置されているオブジェクトのサポート

同じ場所に配置されているオブジェクトの場合、RMI/ORMIは同じ場所に配置された使用例を 検出し、余分で不要なソケット・コールを回避します。

これは、JNDIレジストリが同じ場所に配置されている場合にも当てはまります。

注意 注意 注意

注意: OC4J 10gリリース2(10.1.2)の実装では、ロード・バランシングと

フェイルオーバーがサポートされるのはORMIの場合のみで、IIOPの場合は サポートされません。

RMI用のOC4Jの構成

クライアント・サイドの要件 クライアント・サイドの要件 クライアント・サイドの要件 クライアント・サイドの要件

EJBにアクセスするには、クライアント・サイドで次の手順を実行します。

1. oc4j_client.zipファイルを次のURLからダウンロードします。

http://www.oracle.com/technology/software/products/ias/devuse.html 2. クライアント・サイド・ディレクトリ(d:¥oc4jclientなど)に解凍します。

3. CLASSPATHにd:¥oc4jclient¥oc4jclient.jarを追加します。

oc4j_client.zipファイルには、クライアントに必要なJARファイル(oc4jclient.jar およびoptic.jarなど)がすべて含まれています。これらのJARファイルには、クライアン トの対話に必要なクラスが格納されています。クライアントに必要な他のJARファイルはすべ てoc4jclient.jarのマニフェスト・クラスパスで参照されるため、oc4jclient.jarのみ

をCLASSPATHに追加する必要があります。

このファイルをブラウザにダウンロードする場合は、特定のパーミッションを付与する必要が あります。『Oracle Application Server Containers for J2EE Enterprise JavaBeans開発者ガイド』

の「EJBアプリケーションのセキュリティの構成」の「ブラウザにおける権限の付与」を参照 してください。

RMI 用の 用の 用の 用の OC4J の構成 の構成 の構成 の構成

OC4JをRMI用に構成するには、次の2つの方法があります。

Oracle Enterprise Manager 10gを使用したRMIの構成

手動によるRMIの構成

OC4Jの構成にはOracle Enterprise Manager 10gを使用することをお薦めします。

OC4JをRMI用に構成した後、5-7ページの「RMI構成ファイル」の説明に従ってRMIのプロ パティを指定する必要があります。

Oracle Enterprise Manager 10g を使用した を使用した を使用した を使用した RMI の構成 の構成 の構成 の構成

次のようにOracle Enterprise Manager 10gを使用して、RMIを使用するようにOC4Jを構成す ることをお薦めします。

1. RMIを介してアプリケーションにアクセスできるようにするOC4Jインスタンスにナビ ゲートします。

図5-1に、homeというOC4Jインスタンスを示します。

図 図 図

5-1 Oracle Enterprise Manager 10gのシステム・コンポーネントのシステム・コンポーネントのシステム・コンポーネントのシステム・コンポーネント

2. OC4Jインスタンス名をクリックします。

3. 「管理管理管理管理」タブをクリックします。

4. 「サーバー・プロパティサーバー・プロパティサーバー・プロパティサーバー・プロパティ」をクリックします。

5. Oracle Application Server環境では、デフォルトでRMIは無効化されています。RMIを有

効化するには、図5-2のように「RMIポート」フィールドに値を入力して、OC4Jインスタ ンスごとに一意のRMIポート(またはポート範囲)を設定します。

図図

図図5-2 Oracle Enterprise Manager 10gのサーバー・プロパティのポート構成のサーバー・プロパティのポート構成のサーバー・プロパティのポート構成のサーバー・プロパティのポート構成

6. 「適用適用適用適用」をクリックします。

7. ブラウザの「戻る戻る戻る戻る」ボタンをクリックします。

8. 「レプリケーション・プロパティレプリケーション・プロパティレプリケーション・プロパティレプリケーション・プロパティ」をクリックします。

9. 図5-3に示すように「レプリケート状態レプリケート状態レプリケート状態レプリケート状態」チェック・ボックスを選択します。

「レプリケート状態レプリケート状態レプリケート状態レプリケート状態」チェック・ボックスの選択を解除すると、「EJBアプリケーションアプリケーション」アプリケーションアプリケーション 画面の他の属性は無視されます。

図 図 図

5-3 Oracle Enterprise Manager 10gのレプリケーション・プロパティのレプリケーション・プロパティのレプリケーション・プロパティのレプリケーション・プロパティ

10. 図5-3に示すように「RMIサーバー・ホストサーバー・ホストサーバー・ホストサーバー・ホスト」フィールドを構成します。

サーバーがRMIリクエストを受け入れる特定のホスト名またはIPアドレスを入力します。

OC4Jサーバーは、この特定のホストからのRMIリクエストのみを受け入れます。

11.「適用適用適用適用」をクリックします。

注意 注意 注意

注意:「レプリケーション・プロパティ」ウィンドウの他の属性は、EJBクラ

スタリングにのみ適用されます。詳細は、『Oracle Application Server

Containers for J2EE Enterprise JavaBeans開発者ガイド』の「EJBクラスタリ

ング用のマルチキャスト・アドレスの構成」を参照してください。

RMI用のOC4Jの構成

手動による 手動による 手動による

手動による RMI の構成 の構成 の構成 の構成

OC4Jの構成にはOracle Enterprise Manager 10gを使用することをお薦めします。5-3ページの

「Oracle Enterprise Manager 10gを使用したRMIの構成」を参照してください。RMIを手動で 構成する方法を選択した場合は、次の手順を実行する必要があります。

1. プロパティ・ファイルserver.xmlを編集します。5-5ページの「server.xmlの編集」を 参照してください。

2. 環境に該当する構成ファイルを選択します。

OC4Jスタンドアロン環境の場合は、rmi.xmlファイルのみを編集します(5-5ページ の「rmi.xmlの編集」を参照)。

Oracle Application Server環境の場合は、rmi.xmlファイル(5-5ページの「rmi.xml

の編集」を参照)およびopmn.xmlファイル(5-7ページの「opmn.xmlの編集」を 参照)の両方を編集します。

server.xml の編集 の編集 の編集 の編集

server.xmlファイルの<rmi-config>要素で、RMI構成ファイルのパス名を指定する必要 があります。構文は次のとおりです。

<rmi-config path="RMI_PATH" />

通常、RMI_PATHは./rmi.xmlです。ファイル名は自由に設定できます。

Oracle Application Server環境の場合にのみ、Oracle Application Serverのコマンドラインで次

のコマンドを実行して変更を適用します。

dcmctl updateConfig

rmi.xml の編集 の編集 の編集 の編集

rmi.xmlファイルを編集してrmi-server要素を構成し、リモートRMIサーバーへの接続

(およびRMIサーバーからの接続の受入れ)に使用するホスト、ポート、ユーザー名およびパ スワードを指定します。

rmi.xmlファイルを構成する手順は、次のとおりです。

1. このローカルRMIサーバー用のrmi-server要素を追加します。

次に例を示します。

<rmi-server host="hostname" port="port">

</rmi-server>

<rmi-server>要素のユーザーが置き換えることができる属性は次のとおりです。

hostname: RMIサーバーがRMIリクエストを受け入れるホスト名またはIPアドレス。

この属性を省略すると、RMIサーバーはすべてのホストからのRMIリクエストを受け 入れます。

port: RMIサーバーがRMIリクエストをリスニングするポート番号。

注意 注意 注意

注意: Oracle Application Server環境では、opmnはopmn.xmlファイル

(5-7ページの「opmn.xmlの編集」を参照)に定義されているRMIポートの 範囲から、OC4JインスタンスごとにRMIポートを選択します。rmi.xml ファイルのrmi-server要素のport属性は無視されます。

Oracle Application Server環境で構成ファイルを手動で変更した結果は、

Oracle Application Serverのコマンドラインでdcmctl updateConfigコマ

ンドを実行して構成リポジトリを同期化するまで適用されません。