1 '\" t 2 .\" 3 .\" Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. 4 .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5 .\" 6 .\" This code is free software; you can redistribute it and/or modify it 7 .\" under the terms of the GNU General Public License version 2 only, as 8 .\" published by the Free Software Foundation. 9 .\" 10 .\" This code is distributed in the hope that it will be useful, but WITHOUT 11 .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 .\" version 2 for more details (a copy is included in the LICENSE file that 14 .\" accompanied this code). 15 .\" 16 .\" You should have received a copy of the GNU General Public License version 17 .\" 2 along with this work; if not, write to the Free Software Foundation, 18 .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19 .\" 20 .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 21 .\" or visit www.oracle.com if you need additional information or have any 22 .\" questions. 23 .\" 24 .TH rmid 1 "05 Jul 2012" 25 .SH "名前" 26 rmid \- RMI 起動システムデーモン 27 .LP 28 29 .LP 30 .LP 31 \f3rmid\fP で起動システムデーモンを開始すると、オブジェクトを仮想マシン (VM) に登録して起動できるようになります。 32 .LP 33 .SH "形式" 34 .B rmid 35 [ 36 .I options 37 ] 38 .SH "機能説明" 39 .IX "RMI activation system daemon" "" "RMI activation system daemon \(em \fLrmid\fP" 40 .IX "rmid" "" "\fLrmid\fP \(em RMI activation system daemon" 41 .B rmid 42 ツールは、起動システムデーモンを開始します。起動可能なオブジェクトを起動 43 システムに登録したり、Java VM でアクティブにしたりするには、あらかじめ起動 44 システムデーモンを開始しておく必要があります。 45 起動可能なリモートオブジェクト 46 を使ったプログラムの作成方法についての詳細は、Java RMI の仕様 47 .fi 48 (http://docs.oracle.com/javase/6/docs/platform/rmi/spec/rmiTOC.html) 49 および起動のチュートリアル 50 .fi 51 (http://docs.oracle.com/javase/6/docs/technotes/guides/rmi/activation/overview.html) 52 を参照してください。 53 .LP 54 起動システムデーモンは、次のようにセキュリティポリシーファイルを指定して 55 .B rmid 56 コマンドを実行することによって開始できます。 57 .LP 58 .ti +5n 59 .B % rmid \-J\-Djava.security.policy=rmid.policy 60 .LP 61 注: Sun の 62 .BR rmid 63 実装を実行する場合、デフォルトではセキュリティポリシーファイルを指定する必要があります。そうすることで、起動グループ用の JVM の起動に、各 64 .B ActivationGroupDesc 65 内の情報を使用できるかどうかを 66 .B rmid 67 が確認できます。特に、 68 .B CommandEnvironment 69 により指定されるコマンドやオプション、および 70 .B ActivationGroupDesc 71 のコンストラクタに渡されるすべての 72 .B プロパティ 73 は、 74 .BR rmid 75 用のセキュリティポリシーファイルで明示的に許可することが必要になりました。 76 .B sun.rmi.activation.execPolicy 77 プロパティの値は、起動グループの JVM の起動に 78 .B ActivationGroupDesc 79 内の情報を使用できるかどうかの判断に 80 .B rmid 81 が使用するポリシーを定義します。 82 .LP 83 .B rmid 84 をデフォルト設定で実行することにより、以下が行われます。 85 .LP 86 .RS 87 .TP 2 88 \(bu 89 このコマンドはアクティベータを起動するとともにデフォルトポートの 90 .BR 1098 91 で内部レジストリを 92 開始し、 93 .LP 94 .PD 0 95 .TP 96 \(bu 97 .B ActivationSystem 98 を 99 .B java.rmi.activation.ActivationSystem 100 という名前に内部レジストリ上でバインドします。 101 102 .LP 103 .RE 104 レジストリにほかのポートを指定するには、 105 .BR rmid 106 の起動時に 107 .B -port 108 オプションを指定しなければなりません。たとえば、次のようにします。 109 110 .ti +5n 111 .LP 112 .B rmid \-J\-Djava.security.policy=rmid.policy \-port 1099 113 114 .LP 115 このコマンドは、起動システムデーモンを開始し、レジストリのデフォルトポート 116 .B 1099 117 でレジストリを開始します。 118 119 .LP 120 .SS inetd/xinetd からの rmid の起動 121 122 コマンド行から 123 .B rmid 124 を起動しないで、 125 inetd (Solaris) または xinetd (Linux) を設定し、 126 .B rmid 127 を必要に応じて起動することができます。 128 129 .LP 130 起動時に 131 .B rmid 132 は、System.inheritedChannel メソッドを呼び出して 133 継承チャネル (inetd/xinetd からの継承) の 134 取得を試みます。 135 継承されたチャンネルが \f2null\fP であるか、\f2java.nio.channels.ServerSocketChannel\fP のインスタンスでなかった場合、\f2rmid\fP はそのチャンネルは \f2inetd\fP/\f2xinetd\fP によって起動されたものではないと判断し、前述のように起動します。 136 137 .LP 138 .LP 139 継承チャンネルが ServerSocketChannel 140 インスタンスの場合、 141 .B rmid 142 は ServerSocketChannel から 143 取得した java.net.ServerSocket を、 144 エクスポートするリモートオブジェクト 145 (java.rmi.activation.ActivationSystem が 146 バインドされるレジストリと 147 java.rmi.activation.Activator 148 リモートオブジェクト) に対する要求を 149 受け入れるサーバソケットとして使用します。 150 .LP 151 このモードでは、 152 .B rmid 153 の動作は、次のことを除いて、 154 コマンド行から起動した場合と同じです。 155 156 .TP 2 157 \(bu System.err に表示される出力はファイルにリダイレクト 158 されます。このファイルは、接頭辞「rmid-err」と接尾辞「tmp」を 159 使用して java.io.tmpdir システムプロパティ 160 (通常 /var/tmp または /tmp) で指定したディレクトリにあります。 161 162 .TP 2 163 \(bu \-port オプションは許可されていません。このオプションが 164 指定されている場合、 165 .B rmid 166 はエラーメッセージを表示して 167 終了します。 168 169 .TP 2 170 \(bu \-log オプションは必須です。このオプションが 171 指定されていない場合、 172 .B rmid 173 はエラーメッセージを表示して 174 終了します。 175 176 .LP 177 必要に応じて開始するサービスの設定方法についての詳細は、 178 inetd (Solaris) または xinetd (Linux) のマニュアルページを 179 参照してください。 180 181 .SH "オプション" 182 183 .TP 184 .BI \-C someCommandLineOption 185 .B rmid 186 の子プロセス (起動グループ) が作成されたときに、各子プロセスにコマンド行引数 187 として渡されるオプションを指定します。たとえば、次のように指定すると、起動システム 188 デーモンによって生成される各 Java Virtual Machine にプロパティを渡すことができます。 189 190 .sp 1n 191 .ti +5n 192 .B rmid \-C\-Dsome.property=value 193 194 .sp 1n 195 コマンド行引数を子プロセスに渡す機能は、デバッグを行う際に便利です。 196 たとえば、次のようなコマンドを実行できます。 197 198 .sp 1n 199 .ti +5n 200 .B rmid \-C\-Djava.rmi.server.logCalls=true 201 202 .sp 1n 203 このコマンドによって、すべての子 JVM でサーバ呼び出しのログが残るようになります。 204 205 .TP 206 .BI \-J<someCommandLineOption> 207 .B rmid 208 を実行中の java インタプリタに渡すオプションを指定します。たとえば、 209 .B rmid 210 で 211 .BR rmid.policy 212 という名前のポリシーファイルを使用する場合、 213 .BR rmid 214 のコマンド行で 215 .B \-J 216 オプションを使って 217 .B java.security.policy 218 プロパティを定義します。次に例を示します。 219 220 .sp 1n 221 .ti +5n 222 .B rmid \-J\-Djava.security.policy=rmid.policy 223 224 .TP 225 .BI \-J\-Dsun.rmi.activation.execPolicy=<policy> 226 起動グループの実行対象となる JVM の起動に使用するコマンドおよびコマンド行オプションを検査するために、 227 .B rmid 228 が採用するポリシーを指定します。このオプションは、Sun の RMI 起動デーモン実装だけに存在することに注意してください。コマンド行にこのプロパティを指定しない場合、結果は 229 .B \-J-Dsun.rmi.activation.execPolicy=default 230 を指定した場合と同じになります。 231 .IR policy 232 に指定可能な値は、 233 .BR default 234 、 235 .IR policyClassName 236 、または none です。 237 .BR 238 239 .RS 240 .TP 2 241 \(bu 242 .B default 243 (または、このプロパティを指定しない場合) 244 245 .LP 246 デフォルトの 247 .B execPolicy 248 では、使用するセキュリティポリシーファイル内のコマンドおよびオプションを実行する権限が 249 .B rmid 250 に与えられる場合にのみ、 251 .B rmid 252 は特定のコマンド行オプションを指定してコマンドを実行できます。 253 .BR default 254 の実行ポリシーを使用できるのは、 255 デフォルトの起動グループ実装だけです。 256 .sp 1n 257 258 .B rmid 259 は、起動グループの JVM を起動する際、その登録された起動グループ記述子である 260 .BR ActivationGroupDesc 261 内の情報を使用します。グループ記述子では、オプションの 262 .B ActivationGroupDesc.CommandEnvironment 263 を指定します。これには、起動グループを開始する「コマンド」、およびコマンド行に追加する 264 任意のコマンド行「オプション」が含まれます。デフォルトでは、 265 .B rmid 266 は 267 .BR java.home 268 にある 269 .B java 270 コマンドを使用します。グループ記述子には、次に示すように、オプションとしてコマンド行に 271 追加される「プロパティ」オーバーライドも含まれます。 272 273 .sp 1n 274 .ti +5n 275 .BI \-D<property>=<value> 276 277 .sp 1n 278 アクセス権 279 .B com.sun.rmi.rmid.ExecPermission 280 を使用すると、 281 .B rmid 282 に対し、グループ記述子の 283 .B CommandEnvironment 284 で指定されたコマンドを実行して起動グループを開始する権限を与えることができます。 285 アクセス権 286 .B com.sun.rmi.rmid.ExecOptionPermission 287 を使用すると、起動グループを開始するときに、 288 グループ記述子でプロパティオーバーライドとして指定されたコマンド行 289 オプション、または 290 .BR CommandEnvironment 291 でオプションとして指定されたコマンド行オプションを 292 .B rmid 293 から使用できます。 294 295 .sp 1n 296 .B rmid 297 にさまざまなコマンドおよびオプションを実行する権限を与える場合、アクセス権 298 .B ExecPermission 299 および 300 .B ExecOptionPermission 301 を普遍的に (つまり、すべてのコードソースに対して) 許可する必要があります。 302 303 .TP 304 .BI ExecPermission 305 .B ExecPermission 306 クラスは、起動グループを開始するために 307 .B rmid 308 が特定の「コマンド」を実行する権限を表します。 309 .sp 1n 310 .TP 311 .B 構文 312 .br 313 .B ExecPermission 314 の「名前」は、 315 .B rmid 316 に実行権限を与えるコマンドのパス名です。「/*」(「/」はファイル区切り文字、つまり 317 .BR File.separatorChar 318 ) で終わるパス名は、そのディレクトリに含まれるすべてのファイルを表します。「/-」 319 で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリ 320 (再帰的に) を表します。パス名に特別なトークン「<<ALL FILES>>」を指定した場合は、 321 任意のファイルに一致します。 322 .sp 1n 323 324 .B 注: 325 「*」が 1 つだけ指定されたパス名は、現在のディレクトリ内のすべてのファイルを表し、 326 「-」が 1 つだけ指定されたパス名は、現在のディレクトリ内のすべてのファイルと、 327 現在のディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を表します。 328 329 .TP 330 .BI ExecOptionPermission 331 .B ExecOptionPermission 332 クラスは、起動グループの開始時に 333 .B rmid 334 が特定のコマンド行「オプション」を使用する権限を表します。 335 .B ExecOptionPermission 336 の「名前」は、コマンド行オプションの値です。 337 .sp 1n 338 .TP 339 .B 構文 340 .br 341 オプションでは、制限付きワイルドカード指定がサポートされます。 342 アスタリスクは、ワイルドカードマッチングを指定します。アスタリスクは、 343 オプション名自体を表す (つまり、すべてのオプションに一致する) ために 344 使用できます。また、「.」および「=」の次に指定する場合にのみ、 345 オプション名の最後にアスタリスクを使用できます。 346 .sp 1n 347 348 例を示します。「*」、「-Dfoo.*」、「-Da.b.c=*」は有効です。「*foo」、「-Da*b」 349 、「ab*」は無効です。 350 351 .TP 352 .BI rmid のポリシーファイル 353 .B rmid 354 にさまざまなコマンドおよびオプションを実行する権限を与える場合は、アクセス権 355 .B ExecPermission 356 および 357 .B ExecOptionPermission 358 を普遍的に (つまり、すべてのコードソースに対して) 許可する必要があります。 359 これらのアクセス権を検査するのは 360 .B rmid 361 だけであるため、普遍的に許可しても安全です。 362 363 .sp 1n 364 .B rmid 365 にさまざまな実行権限を許可するポリシーファイルの例を、次に示します。 366 367 .sp 1n 368 .ft 3 369 .nf 370 grant { 371 permission com.sun.rmi.rmid.ExecPermission 372 "/files/apps/java/jdk1.2.2/solaris/bin/java"; 373 374 permission com.sun.rmi.rmid.ExecPermission 375 "/files/apps/java/jdk1.2.2/solaris/bin/java_g"; 376 377 permission com.sun.rmi.rmid.ExecPermission 378 "/files/apps/rmidcmds/*"; 379 380 permission com.sun.rmi.rmid.ExecOptionPermission 381 "-Djava.security.policy=/files/policies/group.policy"; 382 383 permission com.sun.rmi.rmid.ExecOptionPermission 384 "-Djava.security.debug=*"; 385 386 permission com.sun.rmi.rmid.ExecOptionPermission 387 "-Dsun.rmi.*"; 388 }; 389 390 .fi 391 .ft 1 392 393 .sp 1n 394 最初の 2 つのアクセス権は、 395 .B rmid 396 に対し、パス名により明示された 1.2.2 バージョンの 397 .B java 398 コマンドを実行する許可を与えます。デフォルトでは、 399 .B java.home 400 にある 401 .B java 402 コマンドのバージョン ( 403 .B rmid 404 が使用するのと同じもの) が使用されるため、ポリシーファイルで指定する必要はありません。 405 3 番目のアクセス権は、 406 .B rmid 407 に対し、ディレクトリ 408 .BR /files/apps/rmidcmds 409 内の任意のコマンドを実行する権限を与えます。 410 411 .sp 1n 412 4 番目に許可されたアクセス権 413 .BR ExecOptionPermission 414 は、 415 .B rmid 416 に対し、セキュリティポリシーファイルを 417 .BR /files/policies/group.policy 418 に定義する起動グループを開始する権限を与えます。次のアクセス権は、起動グループが 419 .B java.security.debug 420 プロパティを使用する権限を与えます。最後のアクセス権は、 421 起動グループが 422 .B sun.rmi 423 プロパティ名階層内の任意のプロパティを使用する権限を与えます。 424 425 .sp 1n 426 ポリシーファイルを使って 427 .B rmid 428 を起動するには、 429 .BR rmid 430 のコマンド行で 431 .B java.security.policy 432 プロパティを指定する必要があります。次に例を示します。 433 434 .sp 1n 435 .ti +5n 436 .B rmid \-J\-Djava.security.policy=rmid.policy 437 438 .TP 2 439 \(bu 440 .I <policyClassName> 441 442 .sp 1n 443 デフォルトの動作では十分な柔軟性が得られない場合、管理者は 444 .BR rmid 445 の起動時に、 446 .B checkExecCommand 447 メソッドが実行されるクラスの名前を指定することにより、 448 .BR rmid 449 が実行するコマンドを検査できます。 450 .sp 1n 451 452 .IR policyClassName 453 には、public で引数を必要としないコンストラクタとともに public クラスを指定します。また、次の 454 .B checkExecCommand 455 メソッド実装も指定します。 456 457 .sp 1n 458 .ft 3 459 .nf 460 .in +5n 461 public void checkExecCommand(ActivationGroupDesc desc, 462 String[] command) 463 throws SecurityException; 464 .in 465 .fi 466 .ft 1 467 468 .sp 1n 469 起動グループを開始する前に、 470 .B rmid 471 は、ポリシーの 472 .BR checkExecCommand 473 メソッドを呼び出して、起動グループの記述子および起動グループを開始する完全な 474 コマンドを含む配列を渡します。 475 .B checkExecCommand 476 が 477 .BR SecurityException 478 をスローする場合、 479 .B rmid 480 は起動グループを開始せず、オブジェクトの起動を試みている呼び出し側に 481 .B ActivationException 482 がスローされます。 483 484 .TP 485 \(bu 486 .B none 487 488 .sp 1n 489 .B sun.rmi.activation.execPolicy 490 プロパティの値が「none」の場合、 491 .B rmid 492 は、起動グループの開始コマンドの検証を一切行いません。 493 494 .TP 495 496 .BI \-log " dir" 497 起動システムデーモンがデータベースおよび関連情報を書き込むのに使う、 498 ディレクトリの名前を指定します。デフォルトでは、 499 .B rmid 500 コマンドを実行したディレクトリに 501 .B log 502 というログディレクトリが作成されます。 503 504 .TP 505 .BI \-port " port" 506 .BR rmid 507 のレジストリが使うポートを指定します。起動システムデーモンは、 508 .BR java.rmi.activation.ActivationSystem 509 という名前で 510 .BR ActivationSystem 511 をレジストリにバインドします。したがって、ローカルマシンの 512 .B ActivationSystem 513 は、次のように 514 .B Naming.lookup 515 メソッドを呼び出すことによって取得できます。 516 517 .LP 518 .RS 519 .ft 3 520 .nf 521 import java.rmi.*; 522 import java.rmi.activation.*; 523 524 ActivationSystem system; 525 system = (ActivationSystem) 526 Naming.lookup("//:port/java.rmi.activation.ActivationSystem"); 527 .fl 528 .fi 529 530 .RE 531 .TP 532 .BI \-stop 533 .B -port 534 オプションによって指定されたポートの、現在の 535 .B rmid 536 の呼び出しを停止します。ポートの指定がない場合は、ポート 1098 で実行されている 537 .B rmid 538 を停止します。 539 .SH "環境変数" 540 .TP 20 541 .SB "CLASSPATH" 542 ユーザ定義クラスへのパスをシステムに通知するために使用します。ディレクトリはコロンで 543 区切ります。以下に例を示します。 544 .RS 545 .LP 546 .ft 3 547 548 .nf 549 % .:/usr/local/java/classes 550 551 .fi 552 .ft 1 553 .RE 554 .SH "関連項目" 555 .LP 556 557 .LP 558 .LP 559 rmic、CLASSPATH、java 560 .LP 561 562 .LP 563