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