rmic によって、JRMP または IIOP プロトコルを使用するリモートオブジェクトのスタブ、スケルトン、および Tie が生成されます。 また、OMG IDL も生成されます。
rmic [ options ] package-qualified-class-name(s)
rmic コンパイラによって、リモートオブジェクトの、スタブ、スケルトンクラスファイル (JRMP プロトコル)、およびスタブと Tie クラスファイルの組み合わせ (IIOP プロトコル) が生成されます。 これらのクラスファイルは、リモートオブジェクトの実装を含む Java プログラミング言語のクラスをコンパイルしたときに生成されます。 リモートオブジェクトは、java.rmi.Remote インタフェースを実装するオブジェクトです。 rmic コマンドで名前を指定するクラスは、javac コマンドでコンパイルが成功していて、かつ完全なパッケージ名が指定されている必要があります。 たとえば、クラスファイル名 HelloImpl で rmic を実行するには、次のようにします。rmic hello.HelloImplは、HelloImpl_Skel.class および HelloImpl_Stub.class ファイルを、クラスのパッケージ名が付いた hello サブディレクトリに作成します。リモートオブジェクトの「スケルトン」は JRMP プロトコルサーバ側のエンティティで、実際のリモートオブジェクト実装を呼び出すメソッドを含みます。
リモートオブジェクトの「Tie」は、スケルトンと同様にサーバ側のエンティティですが、IIOP プロトコルを使ってクライアントと通信します。
「スタブ」とは、リモートオブジェクトの代理です。 スタブは、リモートオブジェクトのメソッド呼び出しを、実物のリモートオブジェクトが常駐するサーバに転送する責任を持ちます。 したがって、クライアントのリモートオブジェクトへの参照は、実際はローカルスタブへの参照となります。 デフォルトでは、JRMP プロトコルスタブが生成されます。 IIOP プロトコル用のスタブを生成するには
-iiop
オプションを使用します。スタブはリモートインタフェースだけを実装し、リモートオブジェクトが実装する局所インタフェースは実装していません。 JRMP スタブはリモートオブジェクト自体が実装するリモートインタフェースとまったく同じものを実装しているので、クライアントは、キャストや型チェックに Java プログラミング言語に組み込まれた演算子を使用することができます。 IIOP の場合は、PortableRemoteObject.narrow メソッドを使わなければなりません。
- -bootclasspath path
- ブートストラップクラスファイルの位置をオーバーライドします。
- -classpath path
- rmic がクラスを探すためのパスを指定します。 このオプションは、デフォルトや CLASSPATH 環境変数設定を上書きします。 ディレクトリはセミコロンで分割します。 したがって、path の一般形式は次のようになります。
例を示します。.;<your_path>.;C:¥usr¥local¥java¥classes- -d directory
- 生成されたクラス階層の出力先ルートディレクトリを指定します。 このオプションを使えば、スタブ、Tie、およびスケルトンファイルを格納するディレクトリを指定できます。 たとえば、次のようにして使います。
Windows:
% rmic -d C:¥java¥classes foo.MyClassSolaris:
% rmic -d /java/classes foo.MyClassMyClass
から取得したスタブとスケルトンクラスを C:¥java¥classes¥foo ディレクトリに置きます。 -d オプションが指定されていない場合は、「-d .」が指定されていると見なされます。 ターゲットクラスのパッケージ階層が現在のディレクトリに作成され、スタブ、Tie、およびスケルトンファイルがそのディレクトリに格納されます。 以前のバージョンの rmic では、-d が指定されていない場合は、パッケージ階層は作成されず、出力ファイルは現在のディレクトリに直接格納されていました。
- -depend
- コンパイラに、他のクラスが参照するクラスを再コンパイルするかどうかを判断させます。 通常、ソースコードが参照するクラスが欠落したり、古くなったものを再コンパイルするだけです。
- -extdirs path
- インストール型拡張機能の位置をオーバーライドします。
- -g
- デバッガ用のテーブルを生成します。 デバッガ用のテーブルは行番号や局所変数に関する情報を含みます。 この情報は Java デバッガツールが使用します。 デフォルトでは、行番号だけが生成されます。
- -idl
- rmic によって、指定したクラスおよび参照されたクラスの OMG IDL が生成されます。 IDL では、プログラミング言語に依存せずに、宣言するだけでオブジェクトの API を指定することができます。 IDL は、メソッドおよびデータの仕様として使用します。CORBA バインディングを提供する任意の言語で、メソッドおよびデータの作成および呼び出しを行うことができます。 これらの言語には、Java および C++ が含まれています。 詳細は、Java Language to IDL Mapping (OMG) を参照してください。
-idl
オプションを使うときは、ほかのオプションも指定できます。
- -always または -alwaysgenerate
- 既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。
- -factory
- 生成された IDL で factory キーワードを使います。
- -idlModule fromJavaPackage[.class] toIDLModule
- IDLEntity パッケージのマップを指定します。 例: -idlModule foo.bar my::real::idlmod
- -idlFile fromJavaPackage[.class] toIDLFile
- IDLEntity ファイルのマップを指定します。 例: -idlFile test.pkg.X TEST16.idl
- -iiop
rmic
によって、JRMP のスタブとスケルトンクラスの代わりに、IIOP のスタブと Tie クラスが生成されます。 スタブクラスは、リモートオブジェクトのローカルプロキシで、クライアントからサーバに呼び出しを送信するときに使われます。 各リモートインタフェースにはスタブクラスが必要です。スタブクラスによってリモートインタフェースが実装されます。 クライアントでリモートオブジェクトを参照するときは、実際にはスタブを参照することになります。 タイクラスは、サーバ側で着呼を処理し、その呼び出しを適切な実装クラスにディスパッチするときに使われます。 各実装クラスには、タイクラスが必要です。-iiop を使って rmic を呼び出すと、次の命名規約に準拠したスタブと Tie が生成されます。
_<implementationName>_stub.class
_<interfaceName>_tie.class
-iiop
オプションを使うときは、ほかのオプションも指定できます。
- -always または -alwaysgenerate
- 既存のスタブ、Tie、および IDL が入力クラスより新しいときでも、強制的に生成し直します。
- -nolocalstubs
- 同じプロセスのクライアントとサーバに対して最適化されたスタブを作成しません。
- -noValueMethods
-idl
オプションとともに使われなければなりません。 発行された IDL に、valuetype メソッドおよび初期化子を追加しません。 このメソッドおよび初期化子は、valuetype の場合はオプションです。 -idl オプションを使うときは、 -noValueMethods オプションを指定しない限り生成されます。- -poa
- 継承が org.omg.CORBA_2_3.portable.ObjectImpl から org.omg.PortableServer.Servant に変わります。
Portable Object Adapter (POA) の PortableServer モジュールは、ネイティブの Servant 型を定義します。 Java プログラミング言語では、Servant 型は、Java の org.omg.PortableServer.Servant クラスにマッピングされています。 これはあらゆる POA サーバント実装の基底クラスとなり多数のメソッドを提供します。これらのメソッドはアプリケーションプログラマが呼び出すだけではなく、POA 自身からも呼び出され、場合によってはサーバントの動作を制御するためにユーザがオーバーライドすることもあります。 OMG IDL to Java Language Mapping Specification、CORBA V 2.3.1 ptc/00-01-08.pdf に準拠しています。
- -J
- -J の後ろに続くオプションを java インタプリタに引き渡します。 java オプションと組み合わせて使います (-J と java オプションの間にスペースは入れない)。
- -keep または -keepgenerated
- スタブやスケルトンのための .java ソースファイルを .class ファイルと同じディレクトリに残します。
- -nowarn
- 警告をオフにします。 このオプションを指定すると、コンパイラは警告を表示しません。
- -vcompat
- (デフォルト) 1.1 と 1.2 の両方の JRMP スタブプロトコルバージョンと互換性のあるスタブとスケルトンを作成します。
- -verbose
- コンパイラやリンカが、コンパイルされているクラスやロードされているクラスファイルについてのメッセージを表示するようにします。
- -v1.1
- 1.1 の JRMP スタブプロトコルバージョンのスタブとスケルトンを作成します。
- -v1.2
- 1.2 の JRMP スタブプロトコルバージョンだけのスタブを作成します。
- CLASSPATH
- ユーザ定義クラスへのパスをシステムに指定します。 ディレクトリは、UNIX と Macintosh ではコロンで区切り、Windows 95 ではセミコロンで区切ります。 例を示します。
.;C:¥usr¥local¥java¥classes
java、javac、CLASSPATH
Copyright © 2002 Sun Microsystems, Inc. All Rights Reserved. |
Java ソフトウェア |