rmic.1 10.5 KB
Newer Older
D
duke 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370
'\" t
.\"
.\" Copyright 2000-2004 Sun Microsystems, Inc.  All Rights Reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
.\" under the terms of the GNU General Public License version 2 only, as
.\" published by the Free Software Foundation.
.\"
.\" This code is distributed in the hope that it will be useful, but WITHOUT
.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
.\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
.\" version 2 for more details (a copy is included in the LICENSE file that
.\" accompanied this code).
.\"
.\" You should have received a copy of the GNU General Public License version
.\" 2 along with this work; if not, write to the Free Software Foundation,
.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
.\"
.\" Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
.\" CA 95054 USA or visit www.sun.com if you need additional information or
.\" have any questions.
.\"
.\" 
.TH rmic 1 "2004 年 6 月 22 日"
.SH "名前"
rmic \- Java RMI スタブコンパイラ
.\" 
.\"  This document was created by saving an HTML file as text
.\"  from the JavaSoft web site:
.\" 
.\" http://java.sun.com/products/jdk/1.2/docs/tooldocs/tools.html
.\" 
.\"  and adding appropriate troff macros.  Because the JavaSoft web site 
.\"  man pages can change without notice, it may be helpful to diff
.\"  files to identify changes other than new functionality. 
.\" 
.SH "形式"
.B rmic 
[
.BI options 
] 
.I package-qualified-class-names
.SH "機能説明"
.IX "Java RMI stub compiler" "" "Java RMI stub compiler \(em \fLrmic\fP"
.IX "rmic" "" "\fLrmic\fP \(em Java RMI stub compiler"
.B rmic 
コンパイラは、リモートオブジェクト用のスタブおよび
スケルトンクラスファイル (JRMP プロトコル) とスタブ
および Tie クラスファイル (IIOP プロトコル) を生成します。
これらのクラスファイルは、リモートオブジェクト
実装クラスである、コンパイルされた Java プログラミング言語
クラスから生成されます。リモート実装クラスは、
インタフェース \f3java.rmi.Remote\f1 
を実装するクラスです。
.B rmic 
コマンドで指定されるクラスは、
.BR javac (1) 
コマンドで正常にコンパイルされ、
完全にパッケージ修飾されたクラスで
なければなりません。
次に示す例では、
.B HelloImpl
というクラスファイルに対して
.B rmic
を実行しています。
.LP
.RS
rmic hello.HelloImpl
.RE
.LP
.B HelloImpl_Stub.class 
ファイルを (クラスのパッケージに対して指定された)  
.B hello
サブディレクトリに作成します。
.LP
JRMP プロトコルサーバ側エンティティである
リモートオブジェクトのスケルトンには、
リモートオブジェクト実装の呼び出しを
ディスパッチするメソッドがあります。
.LP
リモートオブジェクトの Tie は、スケルトンに似た
サーバ側エンティティですが、IIOP プロトコル
を使用してクライアントと通信します。 
.LP
スタブは、リモートオブジェクトのプロキシで、
実際のリモートオブジェクト実装が存在するサーバに、
リモートオブジェクトに対するメソッド呼び出しを転送します。
クライアントのリモートオブジェクトへの参照は、
実際にはローカルスタブへの参照です。
.LP
デフォルトでは、
.B rmic 
は \-v1.2 オプションが
指定された場合と同様に 1.2 JRMP スタブプロトコルを
使用するスタブクラスを生成します (1.5 より前の
リリースでは、\-vcompat オプションがデフォルト)。
IIOP プロトコル用のスタブクラスおよび Tie クラスを
生成するには、\-iiop オプションを使用します。
.LP
スタブは、リモートインタフェースのみを実装し、
リモートオブジェクトによっても実装されるローカル
インタフェースは実装しません。スタブはリモート
オブジェクトとまったく同じリモートインタフェースの
セットを実装するため、クライアントはキャストおよび
型チェックに Java 言語の組み込み演算子を使用できます。
IIOP の場合は、
.B PortableRemoteObject.narrow 
メソッドを
使用する必要があります。
.SH オプション
.if t .TP 20
.if n .TP 15
.BI \-bootclasspath " path"
ブートストラップクラスファイルの位置をオーバーライドします。
.if t .TP 20
.if n .TP 15
.BI \-classpath " path"
.B rmic
がクラスを探すのに用いるパスを
.I path
で指定します。この指定値は、デフォルトおよび
.B CLASSPATH
環境変数の設定値をオーバーライドします。
複数のディレクトリを指定する場合はコロンで区切ります。
したがって
.I path
の通常の形式は次のようになります。
.sp 1n
.ti +5n
.BI .:< your_path >
.sp 1n
以下に例を示します。
.sp 1n
.ti +5n
.B .:/usr/local/java/classes
.if t .TP 20
.if n .TP 15
.BI \-d " directory"
クラス階層のルートディレクトリを指定します。
このオプションを使用して、スタブ、スケルトン、および Tie ファイルの出力先ディレクトリを指定できます。
たとえば、次のコマンドを入力します。
.LP
.RS 5
rmic \-d /java/classes foo.MyClass
.RE
.LP
この例では、MyClass から派生したスタブおよび
スケルトンクラスをディレクトリ /java/classes/foo 
に配置します。\-d オプションが指定されていない場合、
デフォルトの動作は「\-d .」が指定された場合と同様です。
ターゲットクラスのパッケージ階層は、
現在のディレクトリに作成され、スタブ/Tie/スケルトン
ファイルはその階層内に配置されます。
(以前の一部のバージョンの 
.B rmic 
では、
\-d が指定されなかった場合、パッケージ階層は作成されず、
すべての出力ファイル
は、現在のディレクトリ内に直接配置されました。) 
.if t .TP 20
.if n .TP 15
.BI \-extdirs " path"
インストールされている拡張機能の位置を上書きします。
.if t .TP 20
.if n .TP 15
.B \-g
ローカル変数を含む、すべてのデバッグ情報の
生成を有効にします。デフォルトでは、
行番号情報のみが生成されます。 
.if t .TP 20
.if n .TP 15
.B \-idl
.B rmic
によって、指定したクラスおよび参照されたクラスの
.SM OMG IDL
が生成されます。
.SM IDL
では、プログラミング言語に依存せずに、宣言するだけでオブジェクトの 
.SM API
を指定できます。
.SM IDL
は、
.SM CORBA
バインディングを提供する任意の言語 (Java、C++ など) を使用して、メソッドおよびデータの
書き込みおよび呼び出しを行うときの仕様として使われます。
.B \-idl
オプションは、合わせて以下のオプションも指定できます。
.RS
.TP 5
.BR \-always " または " \-alwaysgenerate
既存のスタブ、Tie、および \s-1IDL\s0 が入力クラスより新しいときでも、強制的に生成し直します。 
.PD 0
.TP
.B \-factory
生成された IDL で factory キーワードを使います。
.TP
.B \-idlModule fromJavaPackage[.class] toIDLModule
.B IDLEntity
パッケージのマッピングを指定します。次に例を示します。
.sp 1n
.in +5n
.ft 3
.nf
\-idlModule foo.bar
my::real::idlmod.
.fi
.ft 1
.in
.sp 1n
.TP
.B \-idlFile fromJavaPackage[.class] toIDLFile
.B IDLEntity
ファイルのマッピングを指定します。次に例を示します。
.sp 1n
.ti +5n
.B \-idlFile test.pkg.X TEST16.idl
.RE
.PD
.if t .TP 20
.if n .TP 15
.B \-iiop
.B rmic
は、
.SM JRMP
のスタブとスケルトンクラスの代わりに、
.SM IIOP
のスタブと Tie クラスを生成します。スタブクラスは、リモートオブジェクトの
ローカルプロキシで、クライアントがサーバに呼び出しを送信するときに
使われます。各リモートインタフェースにはスタブクラスが必要です。スタブクラス
によってリモートインタフェースが実装されます。クライアントでリモートオブジェクト
を参照すると、実際にはスタブを参照することになります。Tie クラスは、
サーバ側で受信した呼び出しを処理し、その呼び出しを適切な実装クラスにディスパッチ
するときに使われます。各実装クラスには、Tie クラスが必要です。 
.sp 1n
.B \-iiop
を指定して
.B rmic
を起動すると、次の命名規約に準拠したスタブと Tie が生成されます。 
.sp 1n
.in +5n
.ft 3
.nf
_<implementationName>_stub.class
.sp 1n
_<interfaceName>_tie.class
.ft 1
.fi
.in
.sp 1n
.B \-iiop
オプションは、合わせて以下のオプションも指定できます。
.sp 1n
.ne 1
.bp
.RS
.PD 0
.TP 5
.BR \-always " または " \-alwaysgenerate
既存のスタブ、Tie、および \s-1IDL\s0 が入力クラスより新しいときでも、強制的
に生成し直します。 
.TP
.B \-nolocalstubs
同じプロセスのクライアントとサーバに対して最適化されたスタブを作成しません。
.TP
.B \-noValueMethods
.B \-idl
オプションとともに使用する必要があります。発行された
.SM IDL\s0
に、valuetype メソッドおよび初期化子を追加しません。このメソッドおよび初期化子
は、valuetype のオプションです。
.B \-idl
オプションを使うときは、
.B \-noValueMethods
オプションを指定しない限り生成されます。 
.TP
.B \-poa 
.br
継承を
.BR org.omg.CORBA_2_3.portable.ObjectImpl から
.BR org.omg.PortableServer.Servant\. へ変更します。
.RS
.LP
Portable Object Adapter (POA) の
.BR PortableServer
モジュールは、ネイティブ の servant 型を定義します。
Java プログラミング言語では、servant 型は、Java の 
.BR org.omg.PortableServer.Servant
クラスにマップされます。これはすべての POA サーバント実装の基底クラスとして
機能し、アプリケーション開発者が呼び出せる多数のメソッドを提供します。また、
POA 自体が読み出したり、サーバント動作を制御するためにユーザが上書きした
りできるメソッドも提供します。CORBA V 2.3.1 の「OMG IDL to Java Language Mapping Specfication (ptc/00-01-08.pdf)」に基づいています。
.RE
.PD
.RE
.TP 20
.if t .TP 20
.if n .TP 15
.B \-J
任意の java オプションと
併用した場合、
\-J の後のオプション (
.B \-J 
とオプションの間は空白文字をいれない) 
を java インタプリタに
渡します。
.if t .TP 20
.if n .TP 15
.B \-keepgenerated
スタブ、スケルトンおよび tie クラス用に生成された .java ソースファイルを保持し、.class ファイルと同じディレクトリに書き込みます。
.if t .TP 20
.if n .TP 15
.B \-nowarn
警告をオフにします。このオプションを使用した場合、コンパイラは警告を出力しません。
.if t .TP 20
.if n .TP 15
.B \-vcompat
1.1 と 1.2 の両方の JRMP スタブプロトコル
バージョンと互換性があるスタブおよび
スケルトンクラスを生成します (1.5 より前の
リリースでは、このオプションはデフォルト)。 
生成されたスタブクラスは、JDK 1.1 の仮想マシンに
読み込まれる場合、1.1 のスタブプロトコルバージョンを
使用し、1.2 以降の仮想マシンに読み込まれる場合は、
1.2 のスタブプロトコルバージョンを使用します。
生成されたスケルトンクラスは、1.1 と 1.2 の両方の
スタブプロトコルバージョンをサポートします。
生成されたクラスは、両方の操作モードをサポート
するため、比較的サイズが大きくなります。 
.if t .TP 20
.if n .TP 15
.B \-verbose
コンパイラとリンカに詳細情報を出力させます。具体的には、
コンパイルされるクラスファイル、およびロードされる
クラスファイルに関する情報が出力されます。
.TP 15
.B  \-v1.1
JDK 1.1 のスタブプロトコルバージョン
専用のスタブおよびスケルトンを作成します。
このオプションは、JDK 1.1 から 
.B rmic 
によって生成され、アップグレードできない 
(および動的クラスローディングが使用
されていない) 既存の静的に配備された
スタブクラスと直列化互換性のあるスタブ
クラスを生成する場合にのみ使用します。 
.if t .TP 20
.if n .TP 15
.B  \-v1.2
(デフォルト) 1.2 JRMP のスタブプロトコル
バージョン専用のスタブクラスを生成します。
スケルトンクラスは 1.2 のスタブプロトコル
バージョンで使用されないため、このオプション
ではスケルトンクラスが生成されません。
生成されたスタブクラスが JDK 1.1 の仮想マシンに
読み込まれた場合は、機能しません。
.SH 環境変数
.if t .TP 20
.if n .TP 15
.B CLASSPATH
ユーザ定義クラスへのパスをシステムに通知するために使用します。
ディレクトリはコロンで
区切ります。以下に例を示します。 
.sp 1n
.ti +5n
.B .:/usr/local/java/classes
.SH 関連項目
.BR java (1),
.BR javac (1),
.BR CLASSPATH