rmid.1 16.0 KB
Newer Older
M
mfang 已提交
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
'\" t
.\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
.\" Title: rmid
.\" Language: English
.\" Date: 2013年11月21日
.\" SectDesc: Remote Method Invocation (RMI)ツール
.\" Software: JDK 8
.\" Arch: 汎用
.\"
.\" 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
.pl 99999
.TH "rmid" "1" "2013年11月21日" "JDK 8" "Remote Method Invocation (RMI)"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
rmid \- 起動システム・デーモンを開始すると、オブジェクトをJava仮想マシン(VM)に登録してアクティブ化できるようになります。
.SH "概要"
.sp
.if n \{\
.RS 4
.\}
T
tbell 已提交
58
.nf
M
mfang 已提交
59
\fIrmid\fR [\fIoptions\fR]
T
tbell 已提交
60
.fi
M
mfang 已提交
61 62 63 64 65 66 67 68
.if n \{\
.RE
.\}
.PP
\fIoptions\fR
.RS 4
コマンドライン・オプション。オプションを参照してください。
.RE
69
.SH "説明"
M
mfang 已提交
70 71 72 73 74 75 76 77
.PP
\fIrmid\fRコマンドは、起動システム・デーモンを開始します。起動システム・デーモンを開始してからでないと、アクティブ化可能オブジェクトをアクティブ化システムに登録したり、JVM内でアクティブ化したりすることができません。アクティブ化可能なオブジェクトを使用するプログラムの作成方法の詳細は、\fIアクティブ化の使用\fRに関するチュートリアル(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/rmi/activation/overview\&.html)を参照してください
.PP
\fIrmid\fRコマンドを実行し、次のようにセキュリティ・ポリシー・ファイルを指定して、デーモンを起動します。
.sp
.if n \{\
.RS 4
.\}
T
tbell 已提交
78
.nf
M
mfang 已提交
79
rmid \-J\-Djava\&.security\&.policy=rmid\&.policy
T
tbell 已提交
80
.fi
M
mfang 已提交
81
.if n \{\
T
tbell 已提交
82
.RE
M
mfang 已提交
83 84 85 86 87 88 89 90 91 92 93
.\}
.PP
\fIrmid\fRコマンドのOracleの実装を実行する場合、デフォルトでは、セキュリティ・ポリシー・ファイルを指定する必要があります。それは、\fIrmid\fRコマンドが起動グループ用にJVMを起動するために各\fIActivationGroupDesc\fR内の情報を使用できるかどうかを検証できるようにするためです特に、\fIActivationGroupDesc\fRコンストラクタに渡される\fICommandEnvironment\fRや任意のプロパティによって指定されるコマンドおよびオプションは、\fIrmid\fRコマンドのセキュリティ・ポリシー・ファイルの中で明示的に許可することが必要になりました。\fIsun\&.rmi\&.activation\&.execPolicy\fRプロパティの値は、起動グループ用にJVMを起動するために\fIActivationGroupDesc\fR内の情報を使用できるかどうかを判断するときに\fIrmid\fRコマンドが使用するポリシーを決定します。詳細は、\-J\-Dsun\&.rmi\&.activation\&.execPolicy=policyオプションの説明を参照してください。
.PP
\fIrmid\fRコマンドを実行すると、デフォルト・ポート1098でアクティベータと内部レジストリが起動され、\fIActivationSystem\fRがこの内部レジストリ内の名前\fIjava\&.rmi\&.activation\&.ActivationSystem\fRにバインドされます。
.PP
レジストリに他のポートを指定するには、\fIrmid\fRコマンドの実行時に\fI\-port\fRオプションを指定する必要があります。たとえば、次のコマンドは、レジストリのデフォルト・ポート1099で、起動システム・デーモンとレジストリを起動します。
.sp
.if n \{\
.RS 4
.\}
T
tbell 已提交
94
.nf
M
mfang 已提交
95
rmid \-J\-Djava\&.security\&.policy=rmid\&.policy \-port 1099
T
tbell 已提交
96
.fi
M
mfang 已提交
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
.if n \{\
.RE
.\}
.SH "必要に応じてRMIDを開始"
.PP
\fIrmid\fRをコマンドラインから開始するには、\fIinetd\fR
(Oracle Solarisの場合)、または\fIxinetd\fR
(Linuxの場合)を構成して\fIrmid\fRを必要に応じて開始する方法もあります。
.PP
RMIDを開始すると、\fISystem\&.inheritedChannel\fRメソッドを呼び出して、継承されたチャンネル(\fIinetd\fR/\fIxinetd\fRから継承)を取得しようとします。継承されたチャンネルがnullであるか、\fIjava\&.nio\&.channels\&.ServerSocketChannel\fRのインスタンスでなかった場合、RMIDはそのチャンネルは\fIinetd\fR/\fIxinetd\fRによって起動されたものではないと判断し、前述のように起動します。
.PP
継承されたチャンネルが\fIServerSocketChannel\fRインスタンスである場合は、RMIDはエクスポートするリモート・オブジェクト、つまり\fIjava\&.rmi\&.activation\&.ActivationSystem\fRがバインドされているレジストリと\fIjava\&.rmi\&.activation\&.Activator\fRリモート・オブジェクトに対するリクエストを受信するサーバー・ソケットとして、\fIServerSocketChannel\fRから取得した\fIjava\&.net\&.ServerSocket\fRを使用します。このモードでは、RMIDの動作は、次のことを除いて、コマンドラインから起動した場合と同じです。
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fISystem\&.err\fRに対する出力は、ファイルにリダイレクトされる。このファイルは\fIjava\&.io\&.tmpdir\fRシステム・プロパティで指定されるディレクトリ(通常は\fI/var/tmp\fRまたは\fI/tmp\fR)にある。ファイル名の接頭辞は\fIrmid\-err\fRで、接尾辞は\fItmp\fRである。
T
tbell 已提交
119
.RE
M
mfang 已提交
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
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI\-port\fRオプションは使用できません。このオプションが指定されている場合、RMIDはエラー・メッセージが表示されて終了します。
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI\-log\fRオプションは必須。このオプションが指定されていない場合、RMIDはエラー・メッセージが表示されて終了します。
.RE
.PP
必要に応じてサービスを開始するように構成する方法の詳細は、\fIinetd\fR
(Oracle Solarisの場合)、または\fIxinetd\fR
(Linux)のマニュアル・ページを参照してください。
146
.SH "オプション"
M
mfang 已提交
147 148 149 150 151 152 153 154
.PP
\-C\fIオプション\fR
.RS 4
\fIrmid\fRコマンドの子プロセス(起動グループ)が作成されたときに、それぞれの子プロセスにコマンドライン引数として渡されるオプションを指定します。たとえば、次のように指定すると、起動システム・デーモンによって生成される各仮想マシンにプロパティを渡すことができます。
.sp
.if n \{\
.RS 4
.\}
T
tbell 已提交
155
.nf
M
mfang 已提交
156
rmid \-C\-Dsome\&.property=value
T
tbell 已提交
157
.fi
M
mfang 已提交
158 159 160 161 162 163 164 165
.if n \{\
.RE
.\}
コマンドライン引数を子プロセスに渡す機能は、デバッグを行う場合に便利です。たとえば、次のコマンドでは、すべての子JVMでserver\-callロギングが可能です。
.sp
.if n \{\
.RS 4
.\}
T
tbell 已提交
166
.nf
M
mfang 已提交
167
rmid \-C\-Djava\&.rmi\&.server\&.logCalls=true
T
tbell 已提交
168
.fi
M
mfang 已提交
169 170 171 172 173 174 175 176 177 178 179 180
.if n \{\
.RE
.\}
.RE
.PP
\-J\fIoption\fR
.RS 4
RMIDを実行しているJavaインタプリタに渡すオプションを指定します。たとえば、\fIrmid\fRコマンドが\fIrmid\&.policy\fRという名前のポリシー・ファイルを使用するように指定するには、\fIrmid\fRのコマンドラインで\fI\-J\fRオプションを使用して、\fIjava\&.security\&.policy\fRプロパティを定義します。次に例を示します。
.sp
.if n \{\
.RS 4
.\}
T
tbell 已提交
181
.nf
M
mfang 已提交
182
rmid \-J\-Djava\&.security\&.policy\-rmid\&.policy
T
tbell 已提交
183
.fi
M
mfang 已提交
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
.if n \{\
.RE
.\}
.RE
.PP
\-J\-Dsun\&.rmi\&.activation\&.execPolicy=\fIpolicy\fR
.RS 4
起動グループが実行されることになるJVMの起動に使用するコマンドおよびコマンドライン・オプションをチェックするために、RMIDが採用するポリシーを指定します。このオプションは、Java RMI起動デーモンのOracleの実装のみに存在することに注意してください。コマンドラインにこのプロパティを指定しない場合、結果は\fI\-J\-Dsun\&.rmi\&.activation\&.execPolicy=default\fRを指定した場合と同じになります。\fIpolicy\fRに指定可能な値は、\fIdefault\fR、\fIpolicyClassName\fRまたは\fInone\fRです。
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
デフォルト
.sp
\fIdefault\fRまたは未指定値の\fIexecPolicy\fRの場合、\fIrmid\fRコマンドが実行できるのは、\fIrmid\fRコマンドが使用するセキュリティ・ポリシー・ファイルの中で、実行する権限が\fIrmid\fRに与えられているコマンドおよびコマンドライン・オプションのみです。デフォルトの実行ポリシーで使用できるのは、デフォルトの起動グループ実装のみです。
.sp
\fIrmid\fRコマンドは、起動グループ用のJVMを起動するときに、そのグループについて登録された起動グループ記述子である\fIActivationGroupDesc\fR内の情報を使用します。グループ記述子は、\fIActivationGroupDesc\&.CommandEnvironment\fRを指定します(省略可能)。これには、起動グループを開始するコマンドと、そのコマンドラインに追加できるコマンドライン・オプションが含まれています。デフォルトでは、\fIrmid\fRコマンドは\fIjava\&.home\fRにある\fIjava\fRコマンドを使用します。グループ記述子には、コマンドラインにオプションとして追加されるプロパティ・オーバーライドも含まれます(\fI\-D<property>=<value>\fRとして定義されます)。\fIcom\&.sun\&.rmi\&.rmid\&.ExecPermission\fR権限は\fIrmid\fRコマンドに、起動グループを開始するためにグループ記述子の\fICommandEnvironment\fRで指定されたコマンドを実行する権限を付与します。\fIcom\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fR権限は起動グループの開始時に、グループ記述子でプロパティ・オーバーライドとして、または\fICommandEnvironment\fRでオプションとして指定されたコマンドライン・オプションを、\fIrmid\fRコマンドが使用することを許可します。\fIrmid\fRコマンドに様々なコマンドおよびオプションを実行する権限を付与する場合、権限\fIExecPermission\fRおよび\fIExecOptionPermission\fRをすべてのコード・ソースに付与する必要があります。
.sp
\fBExecPermission\fR
.sp
\fIExecPermission\fRクラスは、起動グループを開始するために\fIrmid\fRコマンドが特定のコマンドを実行する権限を表します。
.sp
\fB構文\fR:
\fIExecPermission\fRの名前は、\fIrmid\fRコマンドに実行を許可するコマンドのパス名です。スラッシュ(/)およびアスタリスク(*)で終わるパス名は、そのディレクトリに含まれるすべてのファイルを示します。スラッシュはファイル区切り文字\fIFile\&.separatorChar\fRです。スラッシュ(/)およびマイナス符号(\-)で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリ(再帰的に)を示します。パス名に特別なトークン\fI<<ALL FILES>>\fRを指定した場合は、任意のファイルを示します。
.sp
パス名にアスタリスク(*)を指定した場合は、現在のディレクトリ内のすべてのファイルを示します。パス名にマイナス符号(\-)を指定した場合は、現在のディレクトリ内のすべてのファイルおよび(再帰的に)現在のディレクトリに含まれるすべてのファイルとサブディレクトリを示します。
.sp
\fBExecOptionPermission\fR
.sp
\fIExecOptionPermission\fRクラスは、起動グループを開始するときに\fIrmid\fRコマンドで特定のコマンドライン・オプションを使用できる権限を表します。\fIExecOptionPermission\fRの名前は、コマンドライン・オプションの値です。
.sp
\fB構文\fR: オプションでは、ワイルドカードが限定的にサポートされます。アスタリスクは、ワイルドカード・マッチを表します。アスタリスク(*)は、オプション名そのものとして使用できます。つまり、任意のオプションを表すことができます。また、オプション名の末尾に使用することもできます。ただし、ドット(\&.)か等号(=)の直後にアスタリスク(*)を指定する必要があります。
.sp
例:
\fI*\fRや\fI\-Dmydir\&.*\fRや\fI\-Da\&.b\&.c=*\fRは有効ですが、\fI*mydir\fRや\fI\-Da*b\fRや\fIab*\fRは無効です。
.sp
\fBrmidのポリシー・ファイル\fR
.sp
\fIrmid\fRコマンドに様々なコマンドおよびオプションを実行する権限を許可する場合は、権限\fIExecPermission\fRおよび\fIExecOptionPermission\fRをすべてのコード・ソースに付与する必要があります(汎用的に)。これらの権限をチェックするのは\fIrmid\fRコマンドのみなので、これらの権限を汎用的に付与しても安全です。
.sp
\fIrmid\fRコマンドに各種の実行権限を付与するポリシー・ファイルの例を、次に示します。
.sp
.if n \{\
.RS 4
.\}
D
duke 已提交
234 235
.nf
grant {
M
mfang 已提交
236 237 238 239
    permission com\&.sun\&.rmi\&.rmid\&.ExecPermission
        "/files/apps/java/jdk1\&.7\&.0/solaris/bin/java";
 
    permission com\&.sun\&.rmi\&.rmid\&.ExecPermission
T
tbell 已提交
240
        "/files/apps/rmidcmds/*";
M
mfang 已提交
241 242 243 244 245 246 247 248 249
 
    permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission
        "\-Djava\&.security\&.policy=/files/policies/group\&.policy";
 
    permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission
        "\-Djava\&.security\&.debug=*";
 
    permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission
        "\-Dsun\&.rmi\&.*";
D
duke 已提交
250 251
};
.fi
M
mfang 已提交
252 253 254 255 256 257 258 259 260 261
.if n \{\
.RE
.\}
最初に付与されている権限は、\fIrmid\fRコマンドに対し、パス名により明示的に指定される\fIjava\fRコマンドの1\&.7\&.0リリースの実行を許可します。デフォルトでは、\fIjava\&.home\fRにあるバージョンの\fIjava\fRコマンドを使用します。\fIrmid\fRコマンドが使用するのと同じバージョンが使用されるため、そのコマンドは、ポリシー・ファイルで指定する必要はありません。2番目の権限は、\fIrmid\fRコマンドに対して、ディレクトリ\fI/files/apps/rmidcmds\fR内の任意のコマンドの実行権限を許可します。
.sp
3番目に付与されている権限\fIExecOptionPermission\fRは、\fIrmid\fRコマンドに対して、セキュリティ・ポリシー・ファイルを\fI/files/policies/group\&.policy\fRとして定義している起動グループの開始を許可します。次の権限は、起動グループが\fIjava\&.security\&.debug property\fRを使用することを許可しています。最後の権限は、起動グループが\fIsun\&.rmi property\fR名の階層内の任意のプロパティを使用することを許可しています。
.sp
ポリシー・ファイルを指定して\fIrmid\fRコマンドを起動するには、\fIrmid\fRのコマンドラインで\fIjava\&.security\&.policy\fRプロパティを指定する必要があります。次に例を示します。
.sp
\fIrmid \-J\-Djava\&.security\&.policy=rmid\&.policy\fR\&.
T
tbell 已提交
262
.RE
M
mfang 已提交
263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
<policyClassName>
.sp
デフォルトの動作では十分な柔軟性が得られない場合、管理者は、\fIrmid\fRの起動時に、\fIcheckExecCommand\fRメソッドが所属するクラスの名前を指定して、\fIrmid\fRコマンドが実行するコマンドをチェックすることができます。
.sp
\fIpolicyClassName\fRには、引数なしのコンストラクタを持ち、次のような\fIcheckExecCommand\fRメソッドを実装しているpublicクラスを指定します。
.sp
.if n \{\
.RS 4
.\}
D
duke 已提交
281
.nf
M
mfang 已提交
282
 public void checkExecCommand(ActivationGroupDesc desc, String[] command)
T
tbell 已提交
283
        throws SecurityException;
D
duke 已提交
284
.fi
M
mfang 已提交
285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301
.if n \{\
.RE
.\}
起動グループを開始する前に、\fIrmid\fRコマンドは、ポリシーの\fIcheckExecCommand\fRメソッドを呼び出します。このとき、起動グループの記述子と、起動グループを開始するための完全なコマンドを含む配列をそのメソッドに渡します。\fIcheckExecCommand\fRが\fISecurityException\fRをスローすると、\fIrmid\fRコマンドはその起動グループを開始せず、オブジェクトの起動を試行している呼出し側には\fIActivationException\fRがスローされます。
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
none
.sp
\fIsun\&.rmi\&.activation\&.execPolicy\fRプロパティの値が\fInone\fRの場合、\fIrmid\fRコマンドは、起動グループを開始するコマンドをまったく検証しません。
T
tbell 已提交
302
.RE
M
mfang 已提交
303 304 305 306 307 308 309 310 311 312 313 314 315 316
.RE
.PP
\-log \fIdir\fR
.RS 4
起動システム・デーモンがデータベースおよび関連情報を書き込むのに使用するディレクトリの名前を指定します。デフォルトでは、\fIrmid\fRコマンドを実行したディレクトリに、logというログ・ディレクトリが作成されます。
.RE
.PP
\-port \fIport\fR
.RS 4
レジストリが使用するポートを指定します。起動システム・デーモンは、このレジストリの中で、\fIjava\&.rmi\&.activation\&.ActivationSystem\fRという名前で\fIActivationSystem\fRをバインドします。ローカル・マシン上の\fIActivationSystem\fRは、次のように\fINaming\&.lookup\fRメソッドを呼び出すことによって取得できます。
.sp
.if n \{\
.RS 4
.\}
D
duke 已提交
317
.nf
M
mfang 已提交
318 319 320
import java\&.rmi\&.*; 
    import java\&.rmi\&.activation\&.*;
 
T
tbell 已提交
321
    ActivationSystem system; system = (ActivationSystem)
M
mfang 已提交
322
    Naming\&.lookup("//:port/java\&.rmi\&.activation\&.ActivationSystem");
D
duke 已提交
323
.fi
M
mfang 已提交
324 325 326 327 328 329 330 331
.if n \{\
.RE
.\}
.RE
.PP
\-stop
.RS 4
\fI\-port\fRオプションによって指定されたポートの、現在の\fIrmid\fRコマンドの呼出しを停止します。ポートが指定されていない場合は、このオプションはポート1098で実行されている\fIrmid\fRの呼出しを停止します。
D
duke 已提交
332
.RE
333
.SH "環境変数"
M
mfang 已提交
334 335 336 337 338
.PP
CLASSPATH
.RS 4
ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで区切られます。例:
\fI\&.:/usr/local/java/classes\fR
D
duke 已提交
339
.RE
340
.SH "関連項目"
M
mfang 已提交
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
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
java(1)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Setting the Class Path
.RE
.br
'pl 8.5i
'bp