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