WebLogic RMI プログラマーズ ガイド
![]() |
![]() |
![]() |
![]() |
以下の節では、WebLogic RMI コンパイラについて説明します。
WebLogic RMI コンパイラ (weblogic.rmic
) は、リモート オブジェクトを生成してコンパイルするためのコマンドライン ユーティリティです。weblogic.rmic
は、クライアントサイドでアプリケーションのカスタム リモート オブジェクト インタフェースに対して動的プロキシを生成し、サーバサイド オブジェクトにホット コード生成を提供します。
クラスタ対応クライアントまたは IIOP クライアントの場合は、明示的に weblogic.rmic を実行するだけです。WebLogic RMI over IIOP を使用すると、クライアントは、Internet Inter-ORB Protocol (IIOP) を介して RMI リモート オブジェクトにアクセスできるため、RMI プログラミング モデルが拡張されます。「RMI over IIOP の使い方」を参照してください。
以下の節では、このリリースの WebLogic RMI コンパイラの機能について説明します。
rmic
を実行すると、WebLogic Server のホット コード生成機能により、メモリ内にサーバ クラス用のバイトコードが自動生成されます。バイトコードは、リモート オブジェクトの必要に応じて、動的に生成されます。現在のバージョンの WebLogic Server では、weblogic.rmic
を実行しても、オブジェクトのスケルトン クラスは生成されません。
ホット コード生成では、クライアント上の動的プロキシからの要求を処理する、サーバサイドのクラスのバイト コードを作成します。動的に生成されたバイトコードはクライアント リクエストをデシリアライズし、実装クラスに対して実行します。次に結果をシリアライズしてクライアントのプロキシへ送り返します。クラスの実装は、Weblogic Server の Weblogic RMI レジストリ内の名前に関連付けられます。
WebLogic RMI コンパイラは、デフォルトの動作により、リモート インタフェース用のプロキシと、そのプロキシを共有するリモート クラス用のプロキシを作成します。プロキシは、リモート オブジェクトのクライアントが使用するクラスです。RMI では、動的に生成されたバイトコードとプロキシ クラスが使用されます。
たとえば、WebLogic RMI コンパイラでは、example.hello.HelloImpl と counter.example.CiaoImpl は、一対のプロキシ クラスとバイトコード、つまりリモート オブジェクト (このサンプルでは example.hello.Hello) によって実装されたリモート インタフェースに適合するプロキシで表わされます。
リモート オブジェクトが複数のインタフェースを実装する場合、プロキシの名前とパッケージは 1 組のインタフェースをエンコードすることによって決定されます。WebLogic RMI コンパイラの -nomanglednames というオプションを使って、デフォルトの動作をオーバーライドできます。このオプションを使用すると、コンパイル時にリモート クラスに固有のプロキシが作成されます。クラス固有のプロキシが検出された場合は、そのプロキシはインタフェース固有のプロキシに優先します。
さらに、WebLogic RMI のプロキシ クラスでは、プロキシは final ではありません。同じ場所に配置されたリモート オブジェクトへの参照は、プロキシではなくオブジェクトそのものへの参照です。
動的プロキシ クラスは、クライアントに渡されるシリアライズ可能クラスです。クライアントは、WebLogic RMI レジストリでクラスをルックアップすることによって、そのクラスのプロキシを取得します。クライアントは、あたかもローカルなクラスであるかのようにプロキシのメソッドを呼び出します。プロキシは、リクエストをシリアライズして WebLogic Server に送ります。
WebLogic RMI コンパイラには、他にも以下のような機能があります。
WebLogic RMI コンパイラは、Java コンパイラがサポートしているオプションをすべて受け入れます。たとえば、コマンドラインのコンパイラ オプションに -d \classes examples.hello.HelloImpl を追加できます。ほかにも、Java コンパイラがサポートしているすべてのオプションを使用でき、これらのオプションは直接 Java コンパイラに渡されます。
次の表に java weblogic.rmic オプションを示します。これらのオプションは、java weblogic.rmic の後、リモート クラス名の前に入力します。
$java weblogic.rmic [options] <classes>...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
weblogic.rmic
を使って、レプリケートされないスタブをクラスタ内に生成することもできます。このようなスタブは、「固定」サービスと呼ばれています。これらのスタブは登録されたホストからのみ使用可能であり、透過的なフェイルオーバやロード バランシングは提供しません。固定サービスはレプリケートされたクラスタ全体の JNDI ツリーにバインドされるので、クラスタ全体で使用可能になります。ただし、固定サービスをホストする各サーバが故障しても、クライアントは別のサーバにフェイルオーバすることはできません。
デプロイメントの際には、appc と ejbc により RMI コンパイラを使用して各 EJB コンテナ クラスが実行され、スタブとスケルトンを動的に生成するのに必要な RMI 記述子が作成されます。weblogic-ejb-jar.xml
ファイルを使用して、iiop-security-descriptor
要素を永続化できます。詳細については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「2.1 の weblogic-ejb-jar.xml の要素」を参照してください。
WebLogic Server 6.1 より前のバージョンでは、weblogic.rmic
を実行すると、クライアントにはスタブが、サーバサイドにはスケルトン コードが生成されました。WebLogic Server 6.1 以降のリリースでは、クライアント サイドで生成されていたスタブは動的プロキシに、サーバサイドのスケルトンはバイトコードに置き換えられています。
weblogic.rmic
を実行します。これにより、必要なプロキシおよびバイトコードが生成され、デプロイ済みの RMI オブジェクトが有効になります。「プロキシの生成」を参照してください。RMI オブジェクトのデプロイメント記述子ファイルを生成するには、以下のパラメータを 1 つ以上指定して weblogic.rmic
を実行します。 weblogic.rmic
を実行します。
![]() ![]() |
![]() |
![]() |