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