1 ." Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
   2 ." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   3 ."
   4 ." This code is free software; you can redistribute it and/or modify it
   5 ." under the terms of the GNU General Public License version 2 only, as
   6 ." published by the Free Software Foundation.
   7 ."
   8 ." This code is distributed in the hope that it will be useful, but WITHOUT
   9 ." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  10 ." FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  11 ." version 2 for more details (a copy is included in the LICENSE file that
  12 ." accompanied this code).
  13 ."
  14 ." You should have received a copy of the GNU General Public License version
  15 ." 2 along with this work; if not, write to the Free Software Foundation,
  16 ." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  17 ."
  18 ." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  19 ." or visit www.oracle.com if you need additional information or have any
  20 ." questions.
  21 ."
  22 .TH rmid 1 "07 May 2011"
  23 
  24 .LP
  25 .SH "名前"
  26 rmid \- Java RMI 起動システムデーモン
  27 .LP
  28 .LP
  29 \f3rmid\fP で起動システムデーモンを開始すると、オブジェクトを仮想マシン (VM) に登録して起動できるようになります。
  30 .LP
  31 .SH "形式"
  32 .LP
  33 .nf
  34 \f3
  35 .fl
  36 rmid [options]
  37 .fl
  38 \fP
  39 .fi
  40 
  41 .LP
  42 .SH "説明"
  43 .LP
  44 .LP
  45 \f3rmid\fP ツールは、起動システムデーモンを開始します。起動システムデーモンを開始してからでないと、起動可能オブジェクトを起動システムに登録したり、VM 内で起動したりすることができません。起動可能なリモートオブジェクトを使ったプログラムの作成方法の詳細は、
  46 .na
  47 \f2「Java RMI 仕様」\fP @
  48 .fi
  49 http://java.sun.com/javase/6/docs/platform/rmi/spec/rmiTOC.htmlおよび
  50 .na
  51 \f2「起動のチュートリアル」\fP @
  52 .fi
  53 http://java.sun.com/javase/6/docs/technotes/guides/rmi/activation/overview.htmlを参照してください。
  54 .LP
  55 .LP
  56 デーモンを起動するには、次のように、セキュリティーポリシーファイルを指定して \f2rmid\fP コマンドを実行します。
  57 .LP
  58 .nf
  59 \f3
  60 .fl
  61     rmid \-J\-Djava.security.policy=rmid.policy
  62 .fl
  63 \fP
  64 .fi
  65 
  66 .LP
  67 .LP
  68 \f3注:\fP \f2rmid\fP の Sun の 実装を実行する場合、デフォルトでは、セキュリティーポリシーファイルを指定する必要があります。それは、 \f2rmid\fP が起動グループ用に VM を起動するために各 \f2ActivationGroupDesc\fP 内の情報を使用できるかどうかを検証できるようにするためです。特に、ActivationGroupDesc のコンストラクタに渡される \f2CommandEnvironment\fP や任意の \f2Properties\fP によって指定される \f2コマンドおよび\fPオプションは、 \f2rmid\fP のセキュリティーポリシーファイルの中で明示的に許可することが必要になりました。\f2sun.rmi.activation.execPolicy\fP プロパティーの値は、 \f2起動グループ用に VM を\fP 起動するために \f2ActivationGroupDesc\fP 内の情報を使用できるかどうかを判断するときに rmid が使用するポリシーを決定します。
  69 .LP
  70 .LP
  71 \f2rmid\fP をデフォルト設定で実行すると、次のような処理が行われます。
  72 .LP
  73 .RS 3
  74 .TP 2
  75 o
  76 アクティベータを起動し、デフォルトポート 1098 で内部レジストリを起動する 
  77 .TP 2
  78 o
  79 この内部レジストリの中で、 \f2ActivationSystem\fP を \f2java.rmi.activation.ActivationSystem という名前に\fP バインドする 
  80 .RE
  81 
  82 .LP
  83 .LP
  84 レジストリにほかのポートを指定するには、rmid の起動時に \f2\-port\fP オプションを \f2指定しなければなりません\fP。次に例を示します。
  85 .LP
  86 .nf
  87 \f3
  88 .fl
  89     rmid \-J\-Djava.security.policy=rmid.policy \-port 1099
  90 .fl
  91 \fP
  92 .fi
  93 
  94 .LP
  95 .LP
  96 このコマンドは、起動システムデーモンを開始し、レジストリのデフォルトポート 1099 でレジストリを開始します。
  97 .LP
  98 .SS 
  99 rmid を inetd/xinetd から開始する
 100 .LP
 101 .LP
 102 \f2rmid\fP をコマンド行から開始するには、 \f2inetd\fP (Solaris の場合)、または \f2xinetd\fP (Linux の場合) を構成して \f2rmid\fP を必要に応じて開始する方法もあります。
 103 .LP
 104 .LP
 105 \f2rmid\fP を開始すると、System.inheritedChannel メソッドを呼び出して、継承されたチャンネル ( \f2inetd\fP/\f2xinetd\fP から継承) を取得しようとします。 継承されたチャンネルが \f2null\fP であるか、 \f2java.nio.channels.ServerSocketChannel\fP のインスタンスでなかった場合、 \f2rmid\fP rmid はそのチャンネルは \f2inetd\fP/\f2xinetd\fP によって起動されたものではないと判断し、前述のように起動します。
 106 .LP
 107 .LP
 108 継承されたチャンネルが \f2ServerSocketChannel\fP インスタンスである場合は、 \f2rmid\fP はエクスポートするリモートオブジェクト、つまり java.rmi.activation.ActivationSystem がバインドされているレジストリと java.rmi.activation.Activator リモートオブジェクトに対する要求を受信するサーバーソケットとして、ServerSocketChannel から取得した java.net.ServerSocket を使用します。 このモードでは、 \f2rmid\fP の動作は、次のことを除いて、 コマンド行から起動した場合と同じです。
 109 .LP
 110 .RS 3
 111 .TP 2
 112 o
 113 \f2System.err\fP に対する出力は、ファイルにリダイレクトされる。このファイルは \f2java.io.tmpdir\fP システムプロパティーで指定されるディレクトリ (通常は \f2/var/tmp\fP または \f2/tmp\fP) にある。ファイル名の接頭辞は \f2"rmid\-err"\fP で、接尾辞は \f2"tmp"\fP である 
 114 .TP 2
 115 o
 116 \f2\-port\fP オプションは拒否される。このオプションを指定すると、 \f2rmid\fP はエラーメッセージを出して終了する 
 117 .TP 2
 118 o
 119 \f2\-log\fP オプションは必須。このオプションを指定しないと、 \f2rmid\fP はエラーメッセージを出して終了する 
 120 .RE
 121 
 122 .LP
 123 .LP
 124 必要に応じてサービスを開始するように設定する詳細については、 \f2inetd\fP (Solaris の場合)、または \f2xinetd\fP (Linux) のマニュアルページを参照してください。
 125 .LP
 126 .SH "オプション"
 127 .LP
 128 .RS 3
 129 .TP 3
 130 \-C<someCommandLineOption> 
 131 \f2rmid\fP の子プロセス (起動グループ) が作成されたときに、それぞれの子プロセスにコマンド行引数として渡されるオプションを指定します。たとえば、次のように指定すると、起動システムデーモンによって生成される各仮想マシンにプロパティーを渡すことができます。 
 132 .nf
 133 \f3
 134 .fl
 135     rmid \-C\-Dsome.property=value
 136 .fl
 137 \fP
 138 .fi
 139 コマンド行引数を子プロセスに渡す機能は、デバッグを行う場合に便利です。たとえば、次のようなコマンドを実行できます。 
 140 .nf
 141 \f3
 142 .fl
 143     rmid \-C\-Djava.rmi.server.logCalls=true
 144 .fl
 145 \fP
 146 .fi
 147 このコマンドにより、すべての子 VM でサーバー呼び出しのログが作成されるようになります。 
 148 .LP
 149 .TP 3
 150 \-J<someCommandLineOption> 
 151 rmid を実行している \f2java\fP インタプリタに渡すオプションを指定します。 たとえば、 \f2rmid\fP が \f2rmid.policy\fP という名前のポリシーファイルを使用するように指定するには、rmid のコマンド行で \f2\-J\fP オプションを使って、 \f2java.security.policy\fP プロパティーを定義します。 次に例を示します。 
 152 .nf
 153 \f3
 154 .fl
 155     rmid \-J\-Djava.security.policy=rmid.policy
 156 .fl
 157 \fP
 158 .fi
 159 .TP 3
 160 \-J\-Dsun.rmi.activation.execPolicy=<policy> 
 161 起動グループが実行されることになる VM の起動に使用するコマンドおよびコマンド行オプションをチェックするために、 \f2rmid\fP が採用するポリシーを指定します。このオプションは、Java RMI 起動デーモンの Sun の実装だけに存在することに注意してください。コマンド行にこのプロパティーを指定しない場合、結果は \f2\-J\-Dsun.rmi.activation.execPolicy=default\fP を指定した場合と同じになります。\f2<policy>\fP に指定可能な値は、\f2default\fP、\f2<policyClassName>\fP、または \f2none\fP です。 
 162 .RS 3
 163 .TP 2
 164 o
 165 \f3default (または、このプロパティーが「指定されていない」場合)\fP 
 166 .LP
 167 デフォルトの \f2execPolicy\fP の場合、 \f2rmid\fP が実行できるのは、 \f2rmid\fP が使用するセキュリティーポリシーファイルの中で、実行する権限が \f2rmid\fP に与えられているコマンドおよびコマンド行オプションだけです。「デフォルト」の実行ポリシーで使用できるのは、デフォルトの起動グループ実装だけです。 
 168 .LP
 169 \f2rmid は、\fP 起動グループ用の VM を起動するときに、そのグループについて登録された起動グループ記述子である \f2ActivationGroupDesc\fP 内の情報を使用します。グループ記述子は、 \f2ActivationGroupDesc.CommandEnvironment\fP を指定します (省略可能)。これには、起動グループを開始する「コマンド」と、そのコマンド行に追加できるコマンド行「オプション」が含まれています。デフォルトでは、 \f2rmid は\fP java.home にある \f2java\fP コマンドを使用します。 グループ記述子には、オプションとしてコマンド行に追加される「プロパティー」オーバーライドも含まれています。このプロパティーは、次のように定義します。 
 170 .nf
 171 \f3
 172 .fl
 173     \-D\fP\f4<property>\fP\f3=\fP\f4<value>\fP\f3
 174 .fl
 175 \fP
 176 .fi
 177 .LP
 178 アクセス権 \f2com.sun.rmi.rmid.ExecPermission\fP を使用すると、 \f2rmid\fP に対して、グループ記述子の \f2CommandEnvironment\fP で指定されたコマンドを実行して起動グループを開始する権限を許可することができます。アクセス権 \f2com.sun.rmi.rmid.ExecOptionPermission\fP を使用すると、グループ記述子でプロパティーオーバーライドとして指定されたコマンド行オプション、または \f2CommandEnvironment\fP でオプションとして指定されたコマンド行オプションを、起動グループを開始するときに rmid が使用できるようになります。 
 179 .LP
 180 \f2rmid に\fP さまざまなコマンドおよびオプションを実行する権限を許可する場合は、アクセス権 \f2ExecPermission\fP および \f2ExecOptionPermission\fP を汎用的に許可する必要があります。つまり、すべてのコードソースに対して許可します。 
 181 .RS 3
 182 .TP 3
 183 ExecPermission 
 184 \f2ExecPermission\fP クラスは、起動グループを開始するために \f2rmid が\fP 特定の「コマンド」を実行する権限を表します。 
 185 .LP
 186 \f3構文\fP
 187 .br
 188 \f2ExecPermission\fP の「名前」は、 \f2rmid\fP に実行を許可するコマンドのパス名です。「/*」 (「/」はファイル区切り文字 File.separatorChar) で終わるパス名は、そのディレクトリに含まれるすべてのファイルを示します。 「/\-」で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を示します。パス名に特別なトークン「<<ALL FILES>>」を指定した場合は、\f3任意の\fPファイルを示します。 
 189 .LP
 190 \f3注:\fP 「*」を 1 つ指定しただけのパス名は、現在のディレクトリ内のすべてのファイルを表します。また、「\-」を 1 つ指定しただけのパス名は、現在のディレクトリ内のすべてのファイルと、現在のディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を表します。  
 191 .TP 3
 192 ExecOptionPermission 
 193 \f2ExecOptionPermission\fP クラスは、起動グループを開始するときに \f2rmid は、起動グループを開始するコマンドをまったく検証しません。\fP 特定のコマンド行「オプション」を使用できる権限を表します。 \f2ExecOptionPermission\fP の「名前」は、コマンド行オプションの値です。 
 194 .LP
 195 \f3構文\fP
 196 .br
 197 オプションでは、ワイルドカードが限定的にサポートされます。アスタリスクは、ワイルドカードマッチを表します。 アスタリスクは、オプション名そのものとして使用できます。 つまり、任意のオプションを表すことができます。 また、オプション名の末尾に使用することもできます。 ただし、「.」か「=」の直後にアスタリスクを指定する必要があります。 
 198 .LP
 199 例を示します。「*」、「\-Dfoo.*」、「\-Da.b.c=*」は有効ですが、「*foo」、「\-Da*b」、「ab*」は無効です。  
 200 .TP 3
 201 rmid のポリシーファイル 
 202 \f2rmid に\fP さまざまなコマンドおよびオプションを実行する権限を許可する場合は、アクセス権 \f2ExecPermission\fP および \f2ExecOptionPermission\fP を汎用的に許可する必要があります。つまり、すべてのコードソースに対して許可します。これらのアクセス権をチェックするのは \f2rmid\fP だけなので、これらのアクセス権を汎用的に許可しても安全です。 
 203 .LP
 204 rmid に各種の実行権限を許可するポリシーファイルの例を、次に示します。 
 205 .nf
 206 \f3
 207 .fl
 208 grant {
 209 .fl
 210     permission com.sun.rmi.rmid.ExecPermission
 211 .fl
 212         "/files/apps/java/jdk1.7.0/solaris/bin/java";
 213 .fl
 214 
 215 .fl
 216     permission com.sun.rmi.rmid.ExecPermission
 217 .fl
 218         "/files/apps/rmidcmds/*";
 219 .fl
 220 
 221 .fl
 222     permission com.sun.rmi.rmid.ExecOptionPermission
 223 .fl
 224         "\-Djava.security.policy=/files/policies/group.policy";
 225 .fl
 226 
 227 .fl
 228     permission com.sun.rmi.rmid.ExecOptionPermission
 229 .fl
 230         "\-Djava.security.debug=*";
 231 .fl
 232 
 233 .fl
 234     permission com.sun.rmi.rmid.ExecOptionPermission
 235 .fl
 236         "\-Dsun.rmi.*";
 237 .fl
 238 };
 239 .fl
 240 \fP
 241 .fi
 242 最初に付与されているアクセス権は、 \f2rmid\fP に対し、パス名により明示的に指定される \f2java\fP コマンドの 1.7.0 バージョンの実行を許可します。デフォルトでは、java.home にあるバージョンの \f2java\fP コマンドを使用します。 \f2rmid\fP が使用するのと同じバージョン) が使用されるため、そのコマンドは、ポリシーファイルで指定する必要はありません。2 番目のアクセス権は、 \f2rmid\fP に対して、ディレクトリ \f2/files/apps/rmidcmds\fP 内の任意のコマンドの実行権限を許可します。 
 243 .LP
 244 3 番目に付与されているアクセス権 \f2ExecOptionPermission\fP は、 \f2rmid\fP に対して、セキュリティーポリシーファイルを \f2/files/policies/group.policy\fP として定義している起動グループの開始を許可します。次のアクセス権は、起動グループが \f2java.security.debug\fP プロパティーを使用することを許可しています。最後のアクセス権は、起動グループが \f2sun.rmi\fP というプロパティー名の階層内の任意のプロパティーを使用することを許可しています。 
 245 .LP
 246 ポリシーファイルを指定して \f2rmid\fP を起動するには、rmid のコマンド行で \f2java.security.policy\fP プロパティーを指定する必要があります。 次に例を示します。 
 247 .LP
 248 \f2rmid \-J\-Djava.security.policy=rmid.policy\fP  
 249 .RE
 250 .TP 2
 251 o
 252 \f4<policyClassName>\fP 
 253 .LP
 254 デフォルトの動作では十分な柔軟性が得られない場合、管理者は、 \f2rmid\fP の起動時に、 \f2checkExecCommand\fP メソッドが所属するクラスの名前を指定して、rmid が実行するコマンドをチェックすることができます。 
 255 .LP
 256 \f2policyClassName\fP には、引数なしのコンストラクタを持ち、次のような \f2checkExecCommand\fP メソッドを実装している public クラスを指定します。 
 257 .nf
 258 \f3
 259 .fl
 260     public void checkExecCommand(ActivationGroupDesc desc,
 261 .fl
 262                                  String[] command)
 263 .fl
 264         throws SecurityException;
 265 .fl
 266 \fP
 267 .fi
 268 起動グループを開始する前に、 \f2rmid\fP は、ポリシーの \f2checkExecCommand\fP メソッドを呼び出します。このとき、起動グループの記述子と、起動グループを開始するための完全なコマンドを含む配列をそのメソッドに渡します。 \f2checkExecCommand\fP が \f2SecurityException\fP をスローすると、 \f2rmid\fP はその起動グループを開始せず、オブジェクトの起動を試行している呼び出し側には \f2ActivationException\fP がスローされます。 
 269 .TP 2
 270 o
 271 \f3none\fP 
 272 .LP
 273 \f2sun.rmi.activation.execPolicy\fP プロパティーの値が「none」の場合、 \f2rmid\fP は、起動グループを開始するコマンドをまったく検証しません。  
 274 .RE
 275 .LP
 276 .TP 3
 277 \-log dir 
 278 起動システムデーモンがデータベースおよび関連情報を書き込むのに使うディレクトリの名前を指定します。デフォルトでは、rmid コマンドを実行したディレクトリに、 \f2log\fP というログディレクトリが作成されます。 
 279 .LP
 280 .TP 3
 281 \-port port 
 282 \f2rmid\fP のレジストリが使うポートを指定します。起動システムデーモンは、このレジストリの中で、 \f2java.rmi.activation.ActivationSystem\fP という名前でActivationSystem をバインドします。したがって、ローカルマシン上の \f2ActivationSystem\fP は、次のように \f2Naming.lookup\fP メソッドを呼び出すことによって取得できます。 
 283 .nf
 284 \f3
 285 .fl
 286     import java.rmi.*; 
 287 .fl
 288     import java.rmi.activation.*;
 289 .fl
 290 
 291 .fl
 292     ActivationSystem system; system = (ActivationSystem)
 293 .fl
 294     Naming.lookup("//:\fP\f4port\fP/java.rmi.activation.ActivationSystem");
 295 .fl
 296 .fi
 297 .TP 3
 298 \-stop 
 299 \-port オプションによって指定されたポートの、現在の \f2rmid\fP 呼び出しを停止します。 ポートが指定されていない場合は、ポート 1098 で実行されている \f2rmid\fP を停止します。 
 300 .RE
 301 
 302 .LP
 303 .SH "環境変数"
 304 .LP
 305 .RS 3
 306 .TP 3
 307 CLASSPATH 
 308 ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。例を示します。 
 309 .nf
 310 \f3
 311 .fl
 312     .:/usr/local/java/classes
 313 .fl
 314 \fP
 315 .fi
 316 .RE
 317 
 318 .LP
 319 .SH "関連項目"
 320 .LP
 321 .LP
 322 rmic(1)、
 323 .na
 324 \f2CLASSPATH\fP @
 325 .fi
 326 http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath、java(1)
 327 .LP
 328