src/solaris/doc/sun/man/man1/ja/rmid.1

Print this page

        

*** 1,328 **** ! ." Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. ! ." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ! ." ! ." This code is free software; you can redistribute it and/or modify it ! ." under the terms of the GNU General Public License version 2 only, as ! ." published by the Free Software Foundation. ! ." ! ." This code is distributed in the hope that it will be useful, but WITHOUT ! ." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ! ." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ! ." version 2 for more details (a copy is included in the LICENSE file that ! ." accompanied this code). ! ." ! ." You should have received a copy of the GNU General Public License version ! ." 2 along with this work; if not, write to the Free Software Foundation, ! ." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ! ." ! ." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ! ." or visit www.oracle.com if you need additional information or have any ! ." questions. ! ." ! .TH rmid 1 "07 May 2011" ! ! .LP ! .SH "名前" ! rmid \- Java RMI 起動システムデーモン ! .LP ! .LP ! \f3rmid\fP で起動システムデーモンを開始すると、オブジェクトを仮想マシン (VM) に登録して起動できるようになります。 ! .LP ! .SH "形式" ! .LP .nf ! \f3 ! .fl ! rmid [options] ! .fl ! \fP .fi ! ! .LP .SH "説明" ! .LP ! .LP ! \f3rmid\fP ツールは、起動システムデーモンを開始します。起動システムデーモンを開始してからでないと、起動可能オブジェクトを起動システムに登録したり、VM 内で起動したりすることができません。起動可能なリモートオブジェクトを使ったプログラムの作成方法の詳細は、 ! .na ! \f2「Java RMI 仕様」\fP @ ! .fi ! http://java.sun.com/javase/6/docs/platform/rmi/spec/rmiTOC.htmlおよび ! .na ! \f2「起動のチュートリアル」\fP @ ! .fi ! http://java.sun.com/javase/6/docs/technotes/guides/rmi/activation/overview.htmlを参照してください。 ! .LP ! .LP ! デーモンを起動するには、次のように、セキュリティーポリシーファイルを指定して \f2rmid\fP コマンドを実行します。 ! .LP .nf ! \f3 ! .fl ! rmid \-J\-Djava.security.policy=rmid.policy ! .fl ! \fP .fi ! ! .LP ! .LP ! \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 が使用するポリシーを決定します。 ! .LP ! .LP ! \f2rmid\fP をデフォルト設定で実行すると、次のような処理が行われます。 ! .LP ! .RS 3 ! .TP 2 ! o ! アクティベータを起動し、デフォルトポート 1098 で内部レジストリを起動する ! .TP 2 ! o ! この内部レジストリの中で、 \f2ActivationSystem\fP を \f2java.rmi.activation.ActivationSystem という名前に\fP バインドする .RE ! ! .LP ! .LP ! レジストリにほかのポートを指定するには、rmid の起動時に \f2\-port\fP オプションを \f2指定しなければなりません\fP。次に例を示します。 ! .LP .nf ! \f3 ! .fl ! rmid \-J\-Djava.security.policy=rmid.policy \-port 1099 ! .fl ! \fP .fi ! ! .LP ! .LP ! このコマンドは、起動システムデーモンを開始し、レジストリのデフォルトポート 1099 でレジストリを開始します。 ! .LP ! .SS ! rmid を inetd/xinetd から開始する ! .LP ! .LP ! \f2rmid\fP をコマンド行から開始するには、 \f2inetd\fP (Solaris の場合)、または \f2xinetd\fP (Linux の場合) を構成して \f2rmid\fP を必要に応じて開始する方法もあります。 ! .LP ! .LP ! \f2rmid\fP を開始すると、System.inheritedChannel メソッドを呼び出して、継承されたチャンネル ( \f2inetd\fP/\f2xinetd\fP から継承) を取得しようとします。 継承されたチャンネルが \f2null\fP であるか、 \f2java.nio.channels.ServerSocketChannel\fP のインスタンスでなかった場合、 \f2rmid\fP rmid はそのチャンネルは \f2inetd\fP/\f2xinetd\fP によって起動されたものではないと判断し、前述のように起動します。 ! .LP ! .LP ! 継承されたチャンネルが \f2ServerSocketChannel\fP インスタンスである場合は、 \f2rmid\fP はエクスポートするリモートオブジェクト、つまり java.rmi.activation.ActivationSystem がバインドされているレジストリと java.rmi.activation.Activator リモートオブジェクトに対する要求を受信するサーバーソケットとして、ServerSocketChannel から取得した java.net.ServerSocket を使用します。 このモードでは、 \f2rmid\fP の動作は、次のことを除いて、 コマンド行から起動した場合と同じです。 ! .LP ! .RS 3 ! .TP 2 ! o ! \f2System.err\fP に対する出力は、ファイルにリダイレクトされる。このファイルは \f2java.io.tmpdir\fP システムプロパティーで指定されるディレクトリ (通常は \f2/var/tmp\fP または \f2/tmp\fP) にある。ファイル名の接頭辞は \f2"rmid\-err"\fP で、接尾辞は \f2"tmp"\fP である ! .TP 2 ! o ! \f2\-port\fP オプションは拒否される。このオプションを指定すると、 \f2rmid\fP はエラーメッセージを出して終了する ! .TP 2 ! o ! \f2\-log\fP オプションは必須。このオプションを指定しないと、 \f2rmid\fP はエラーメッセージを出して終了する .RE ! ! .LP ! .LP ! 必要に応じてサービスを開始するように設定する詳細については、 \f2inetd\fP (Solaris の場合)、または \f2xinetd\fP (Linux) のマニュアルページを参照してください。 ! .LP .SH "オプション" ! .LP ! .RS 3 ! .TP 3 ! \-C<someCommandLineOption> ! \f2rmid\fP の子プロセス (起動グループ) が作成されたときに、それぞれの子プロセスにコマンド行引数として渡されるオプションを指定します。たとえば、次のように指定すると、起動システムデーモンによって生成される各仮想マシンにプロパティーを渡すことができます。 ! .nf ! \f3 ! .fl ! rmid \-C\-Dsome.property=value ! .fl ! \fP ! .fi ! コマンド行引数を子プロセスに渡す機能は、デバッグを行う場合に便利です。たとえば、次のようなコマンドを実行できます。 .nf ! \f3 ! .fl ! rmid \-C\-Djava.rmi.server.logCalls=true ! .fl ! \fP .fi ! このコマンドにより、すべての子 VM でサーバー呼び出しのログが作成されるようになります。 ! .LP ! .TP 3 ! \-J<someCommandLineOption> ! rmid を実行している \f2java\fP インタプリタに渡すオプションを指定します。 たとえば、 \f2rmid\fP が \f2rmid.policy\fP という名前のポリシーファイルを使用するように指定するには、rmid のコマンド行で \f2\-J\fP オプションを使って、 \f2java.security.policy\fP プロパティーを定義します。 次に例を示します。 .nf ! \f3 ! .fl ! rmid \-J\-Djava.security.policy=rmid.policy ! .fl ! \fP .fi ! .TP 3 ! \-J\-Dsun.rmi.activation.execPolicy=<policy> ! 起動グループが実行されることになる VM の起動に使用するコマンドおよびコマンド行オプションをチェックするために、 \f2rmid\fP が採用するポリシーを指定します。このオプションは、Java RMI 起動デーモンの Sun の実装だけに存在することに注意してください。コマンド行にこのプロパティーを指定しない場合、結果は \f2\-J\-Dsun.rmi.activation.execPolicy=default\fP を指定した場合と同じになります。\f2<policy>\fP に指定可能な値は、\f2default\fP、\f2<policyClassName>\fP、または \f2none\fP です。 ! .RS 3 ! .TP 2 ! o ! \f3default (または、このプロパティーが「指定されていない」場合)\fP ! .LP ! デフォルトの \f2execPolicy\fP の場合、 \f2rmid\fP が実行できるのは、 \f2rmid\fP が使用するセキュリティーポリシーファイルの中で、実行する権限が \f2rmid\fP に与えられているコマンドおよびコマンド行オプションだけです。「デフォルト」の実行ポリシーで使用できるのは、デフォルトの起動グループ実装だけです。 ! .LP ! \f2rmid は、\fP 起動グループ用の VM を起動するときに、そのグループについて登録された起動グループ記述子である \f2ActivationGroupDesc\fP 内の情報を使用します。グループ記述子は、 \f2ActivationGroupDesc.CommandEnvironment\fP を指定します (省略可能)。これには、起動グループを開始する「コマンド」と、そのコマンド行に追加できるコマンド行「オプション」が含まれています。デフォルトでは、 \f2rmid は\fP java.home にある \f2java\fP コマンドを使用します。 グループ記述子には、オプションとしてコマンド行に追加される「プロパティー」オーバーライドも含まれています。このプロパティーは、次のように定義します。 .nf ! \f3 ! .fl ! \-D\fP\f4<property>\fP\f3=\fP\f4<value>\fP\f3 ! .fl ! \fP .fi ! .LP ! アクセス権 \f2com.sun.rmi.rmid.ExecPermission\fP を使用すると、 \f2rmid\fP に対して、グループ記述子の \f2CommandEnvironment\fP で指定されたコマンドを実行して起動グループを開始する権限を許可することができます。アクセス権 \f2com.sun.rmi.rmid.ExecOptionPermission\fP を使用すると、グループ記述子でプロパティーオーバーライドとして指定されたコマンド行オプション、または \f2CommandEnvironment\fP でオプションとして指定されたコマンド行オプションを、起動グループを開始するときに rmid が使用できるようになります。 ! .LP ! \f2rmid に\fP さまざまなコマンドおよびオプションを実行する権限を許可する場合は、アクセス権 \f2ExecPermission\fP および \f2ExecOptionPermission\fP を汎用的に許可する必要があります。つまり、すべてのコードソースに対して許可します。 ! .RS 3 ! .TP 3 ! ExecPermission ! \f2ExecPermission\fP クラスは、起動グループを開始するために \f2rmid が\fP 特定の「コマンド」を実行する権限を表します。 ! .LP ! \f3構文\fP ! .br ! \f2ExecPermission\fP の「名前」は、 \f2rmid\fP に実行を許可するコマンドのパス名です。「/*」 (「/」はファイル区切り文字 File.separatorChar) で終わるパス名は、そのディレクトリに含まれるすべてのファイルを示します。 「/\-」で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を示します。パス名に特別なトークン「<<ALL FILES>>」を指定した場合は、\f3任意の\fPファイルを示します。 ! .LP ! \f3注:\fP 「*」を 1 つ指定しただけのパス名は、現在のディレクトリ内のすべてのファイルを表します。また、「\-」を 1 つ指定しただけのパス名は、現在のディレクトリ内のすべてのファイルと、現在のディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を表します。 ! .TP 3 ! ExecOptionPermission ! \f2ExecOptionPermission\fP クラスは、起動グループを開始するときに \f2rmid は、起動グループを開始するコマンドをまったく検証しません。\fP 特定のコマンド行「オプション」を使用できる権限を表します。 \f2ExecOptionPermission\fP の「名前」は、コマンド行オプションの値です。 ! .LP ! \f3構文\fP ! .br ! オプションでは、ワイルドカードが限定的にサポートされます。アスタリスクは、ワイルドカードマッチを表します。 アスタリスクは、オプション名そのものとして使用できます。 つまり、任意のオプションを表すことができます。 また、オプション名の末尾に使用することもできます。 ただし、「.」か「=」の直後にアスタリスクを指定する必要があります。 ! .LP ! 例を示します。「*」、「\-Dfoo.*」、「\-Da.b.c=*」は有効ですが、「*foo」、「\-Da*b」、「ab*」は無効です。 ! .TP 3 ! rmid のポリシーファイル ! \f2rmid に\fP さまざまなコマンドおよびオプションを実行する権限を許可する場合は、アクセス権 \f2ExecPermission\fP および \f2ExecOptionPermission\fP を汎用的に許可する必要があります。つまり、すべてのコードソースに対して許可します。これらのアクセス権をチェックするのは \f2rmid\fP だけなので、これらのアクセス権を汎用的に許可しても安全です。 ! .LP ! rmid に各種の実行権限を許可するポリシーファイルの例を、次に示します。 .nf - \f3 - .fl grant { ! .fl ! permission com.sun.rmi.rmid.ExecPermission ! .fl ! "/files/apps/java/jdk1.7.0/solaris/bin/java"; ! .fl ! .fl ! permission com.sun.rmi.rmid.ExecPermission ! .fl "/files/apps/rmidcmds/*"; - .fl ! .fl ! permission com.sun.rmi.rmid.ExecOptionPermission ! .fl ! "\-Djava.security.policy=/files/policies/group.policy"; ! .fl ! .fl ! permission com.sun.rmi.rmid.ExecOptionPermission ! .fl ! "\-Djava.security.debug=*"; ! .fl ! .fl ! permission com.sun.rmi.rmid.ExecOptionPermission ! .fl ! "\-Dsun.rmi.*"; ! .fl }; - .fl - \fP .fi ! 最初に付与されているアクセス権は、 \f2rmid\fP に対し、パス名により明示的に指定される \f2java\fP コマンドの 1.7.0 バージョンの実行を許可します。デフォルトでは、java.home にあるバージョンの \f2java\fP コマンドを使用します。 \f2rmid\fP が使用するのと同じバージョン) が使用されるため、そのコマンドは、ポリシーファイルで指定する必要はありません。2 番目のアクセス権は、 \f2rmid\fP に対して、ディレクトリ \f2/files/apps/rmidcmds\fP 内の任意のコマンドの実行権限を許可します。 ! .LP ! 3 番目に付与されているアクセス権 \f2ExecOptionPermission\fP は、 \f2rmid\fP に対して、セキュリティーポリシーファイルを \f2/files/policies/group.policy\fP として定義している起動グループの開始を許可します。次のアクセス権は、起動グループが \f2java.security.debug\fP プロパティーを使用することを許可しています。最後のアクセス権は、起動グループが \f2sun.rmi\fP というプロパティー名の階層内の任意のプロパティーを使用することを許可しています。 ! .LP ! ポリシーファイルを指定して \f2rmid\fP を起動するには、rmid のコマンド行で \f2java.security.policy\fP プロパティーを指定する必要があります。 次に例を示します。 ! .LP ! \f2rmid \-J\-Djava.security.policy=rmid.policy\fP ! .RE ! .TP 2 ! o ! \f4<policyClassName>\fP ! .LP ! デフォルトの動作では十分な柔軟性が得られない場合、管理者は、 \f2rmid\fP の起動時に、 \f2checkExecCommand\fP メソッドが所属するクラスの名前を指定して、rmid が実行するコマンドをチェックすることができます。 ! .LP ! \f2policyClassName\fP には、引数なしのコンストラクタを持ち、次のような \f2checkExecCommand\fP メソッドを実装している public クラスを指定します。 .nf ! \f3 ! .fl ! public void checkExecCommand(ActivationGroupDesc desc, ! .fl ! String[] command) ! .fl throws SecurityException; - .fl - \fP .fi ! 起動グループを開始する前に、 \f2rmid\fP は、ポリシーの \f2checkExecCommand\fP メソッドを呼び出します。このとき、起動グループの記述子と、起動グループを開始するための完全なコマンドを含む配列をそのメソッドに渡します。 \f2checkExecCommand\fP が \f2SecurityException\fP をスローすると、 \f2rmid\fP はその起動グループを開始せず、オブジェクトの起動を試行している呼び出し側には \f2ActivationException\fP がスローされます。 ! .TP 2 ! o ! \f3none\fP ! .LP ! \f2sun.rmi.activation.execPolicy\fP プロパティーの値が「none」の場合、 \f2rmid\fP は、起動グループを開始するコマンドをまったく検証しません。 ! .RE ! .LP ! .TP 3 ! \-log dir ! 起動システムデーモンがデータベースおよび関連情報を書き込むのに使うディレクトリの名前を指定します。デフォルトでは、rmid コマンドを実行したディレクトリに、 \f2log\fP というログディレクトリが作成されます。 ! .LP ! .TP 3 ! \-port port ! \f2rmid\fP のレジストリが使うポートを指定します。起動システムデーモンは、このレジストリの中で、 \f2java.rmi.activation.ActivationSystem\fP という名前でActivationSystem をバインドします。したがって、ローカルマシン上の \f2ActivationSystem\fP は、次のように \f2Naming.lookup\fP メソッドを呼び出すことによって取得できます。 .nf ! \f3 ! .fl ! import java.rmi.*; ! .fl ! import java.rmi.activation.*; ! .fl - .fl ActivationSystem system; system = (ActivationSystem) ! .fl ! Naming.lookup("//:\fP\f4port\fP/java.rmi.activation.ActivationSystem"); ! .fl .fi ! .TP 3 \-stop ! \-port オプションによって指定されたポートの、現在の \f2rmid\fP 呼び出しを停止します。 ポートが指定されていない場合は、ポート 1098 で実行されている \f2rmid\fP を停止します。 .RE - - .LP .SH "環境変数" ! .LP ! .RS 3 ! .TP 3 CLASSPATH ! ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。例を示します。 ! .nf ! \f3 ! .fl ! .:/usr/local/java/classes ! .fl ! \fP ! .fi .RE - - .LP .SH "関連項目" ! .LP ! .LP ! rmic(1)、 ! .na ! \f2CLASSPATH\fP @ ! .fi ! http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath、java(1) ! .LP ! --- 1,365 ---- ! '\" t ! .\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. ! .\" Title: rmid ! .\" Language: English ! .\" Date: 2013年11月21日 ! .\" SectDesc: Remote Method Invocation (RMI)ツール ! .\" Software: JDK 8 ! .\" Arch: 汎用 ! .\" ! .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ! .\" ! .\" This code is free software; you can redistribute it and/or modify it ! .\" under the terms of the GNU General Public License version 2 only, as ! .\" published by the Free Software Foundation. ! .\" ! .\" This code is distributed in the hope that it will be useful, but WITHOUT ! .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ! .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ! .\" version 2 for more details (a copy is included in the LICENSE file that ! .\" accompanied this code). ! .\" ! .\" You should have received a copy of the GNU General Public License version ! .\" 2 along with this work; if not, write to the Free Software Foundation, ! .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ! .\" ! .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ! .\" or visit www.oracle.com if you need additional information or have any ! .\" questions. ! .\" ! .pl 99999 ! .TH "rmid" "1" "2013年11月21日" "JDK 8" "Remote Method Invocation (RMI)" ! .\" ----------------------------------------------------------------- ! .\" * Define some portability stuff ! .\" ----------------------------------------------------------------- ! .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! .\" http://bugs.debian.org/507673 ! .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html ! .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! .ie \n(.g .ds Aq \(aq ! .el .ds Aq ' ! .\" ----------------------------------------------------------------- ! .\" * set default formatting ! .\" ----------------------------------------------------------------- ! .\" disable hyphenation ! .nh ! .\" disable justification (adjust text to left margin only) ! .ad l ! .\" ----------------------------------------------------------------- ! .\" * MAIN CONTENT STARTS HERE * ! .\" ----------------------------------------------------------------- ! .SH "NAME" ! rmid \- 起動システム・デーモンを開始すると、オブジェクトをJava仮想マシン(VM)に登録してアクティブ化できるようになります。 ! .SH "概要" ! .sp ! .if n \{\ ! .RS 4 ! .\} .nf ! \fIrmid\fR [\fIoptions\fR] .fi ! .if n \{\ ! .RE ! .\} ! .PP ! \fIoptions\fR ! .RS 4 ! コマンドライン・オプション。オプションを参照してください。 ! .RE .SH "説明" ! .PP ! \fIrmid\fRコマンドは、起動システム・デーモンを開始します。起動システム・デーモンを開始してからでないと、アクティブ化可能オブジェクトをアクティブ化システムに登録したり、JVM内でアクティブ化したりすることができません。アクティブ化可能なオブジェクトを使用するプログラムの作成方法の詳細は、\fIアクティブ化の使用\fRに関するチュートリアル(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/rmi/activation/overview\&.html)を参照してください ! .PP ! \fIrmid\fRコマンドを実行し、次のようにセキュリティ・ポリシー・ファイルを指定して、デーモンを起動します。 ! .sp ! .if n \{\ ! .RS 4 ! .\} .nf ! rmid \-J\-Djava\&.security\&.policy=rmid\&.policy .fi ! .if n \{\ .RE ! .\} ! .PP ! \fIrmid\fRコマンドのOracleの実装を実行する場合、デフォルトでは、セキュリティ・ポリシー・ファイルを指定する必要があります。それは、\fIrmid\fRコマンドが起動グループ用にJVMを起動するために各\fIActivationGroupDesc\fR内の情報を使用できるかどうかを検証できるようにするためです特に、\fIActivationGroupDesc\fRコンストラクタに渡される\fICommandEnvironment\fRや任意のプロパティによって指定されるコマンドおよびオプションは、\fIrmid\fRコマンドのセキュリティ・ポリシー・ファイルの中で明示的に許可することが必要になりました。\fIsun\&.rmi\&.activation\&.execPolicy\fRプロパティの値は、起動グループ用にJVMを起動するために\fIActivationGroupDesc\fR内の情報を使用できるかどうかを判断するときに\fIrmid\fRコマンドが使用するポリシーを決定します。詳細は、\-J\-Dsun\&.rmi\&.activation\&.execPolicy=policyオプションの説明を参照してください。 ! .PP ! \fIrmid\fRコマンドを実行すると、デフォルト・ポート1098でアクティベータと内部レジストリが起動され、\fIActivationSystem\fRがこの内部レジストリ内の名前\fIjava\&.rmi\&.activation\&.ActivationSystem\fRにバインドされます。 ! .PP ! レジストリに他のポートを指定するには、\fIrmid\fRコマンドの実行時に\fI\-port\fRオプションを指定する必要があります。たとえば、次のコマンドは、レジストリのデフォルト・ポート1099で、起動システム・デーモンとレジストリを起動します。 ! .sp ! .if n \{\ ! .RS 4 ! .\} .nf ! rmid \-J\-Djava\&.security\&.policy=rmid\&.policy \-port 1099 .fi ! .if n \{\ .RE ! .\} ! .SH "必要に応じてRMIDを開始" ! .PP ! \fIrmid\fRをコマンドラインから開始するには、\fIinetd\fR ! (Oracle Solarisの場合)、または\fIxinetd\fR ! (Linuxの場合)を構成して\fIrmid\fRを必要に応じて開始する方法もあります。 ! .PP ! RMIDを開始すると、\fISystem\&.inheritedChannel\fRメソッドを呼び出して、継承されたチャンネル(\fIinetd\fR/\fIxinetd\fRから継承)を取得しようとします。継承されたチャンネルがnullであるか、\fIjava\&.nio\&.channels\&.ServerSocketChannel\fRのインスタンスでなかった場合、RMIDはそのチャンネルは\fIinetd\fR/\fIxinetd\fRによって起動されたものではないと判断し、前述のように起動します。 ! .PP ! 継承されたチャンネルが\fIServerSocketChannel\fRインスタンスである場合は、RMIDはエクスポートするリモート・オブジェクト、つまり\fIjava\&.rmi\&.activation\&.ActivationSystem\fRがバインドされているレジストリと\fIjava\&.rmi\&.activation\&.Activator\fRリモート・オブジェクトに対するリクエストを受信するサーバー・ソケットとして、\fIServerSocketChannel\fRから取得した\fIjava\&.net\&.ServerSocket\fRを使用します。このモードでは、RMIDの動作は、次のことを除いて、コマンドラインから起動した場合と同じです。 ! .sp ! .RS 4 ! .ie n \{\ ! \h'-04'\(bu\h'+03'\c ! .\} ! .el \{\ ! .sp -1 ! .IP \(bu 2.3 ! .\} ! \fISystem\&.err\fRに対する出力は、ファイルにリダイレクトされる。このファイルは\fIjava\&.io\&.tmpdir\fRシステム・プロパティで指定されるディレクトリ(通常は\fI/var/tmp\fRまたは\fI/tmp\fR)にある。ファイル名の接頭辞は\fIrmid\-err\fRで、接尾辞は\fItmp\fRである。 ! .RE ! .sp ! .RS 4 ! .ie n \{\ ! \h'-04'\(bu\h'+03'\c ! .\} ! .el \{\ ! .sp -1 ! .IP \(bu 2.3 ! .\} ! \fI\-port\fRオプションは使用できません。このオプションが指定されている場合、RMIDはエラー・メッセージが表示されて終了します。 ! .RE ! .sp ! .RS 4 ! .ie n \{\ ! \h'-04'\(bu\h'+03'\c ! .\} ! .el \{\ ! .sp -1 ! .IP \(bu 2.3 ! .\} ! \fI\-log\fRオプションは必須。このオプションが指定されていない場合、RMIDはエラー・メッセージが表示されて終了します。 ! .RE ! .PP ! 必要に応じてサービスを開始するように構成する方法の詳細は、\fIinetd\fR ! (Oracle Solarisの場合)、または\fIxinetd\fR ! (Linux)のマニュアル・ページを参照してください。 .SH "オプション" ! .PP ! \-C\fIオプション\fR ! .RS 4 ! \fIrmid\fRコマンドの子プロセス(起動グループ)が作成されたときに、それぞれの子プロセスにコマンドライン引数として渡されるオプションを指定します。たとえば、次のように指定すると、起動システム・デーモンによって生成される各仮想マシンにプロパティを渡すことができます。 ! .sp ! .if n \{\ ! .RS 4 ! .\} .nf ! rmid \-C\-Dsome\&.property=value .fi ! .if n \{\ ! .RE ! .\} ! コマンドライン引数を子プロセスに渡す機能は、デバッグを行う場合に便利です。たとえば、次のコマンドでは、すべての子JVMでserver\-callロギングが可能です。 ! .sp ! .if n \{\ ! .RS 4 ! .\} .nf ! rmid \-C\-Djava\&.rmi\&.server\&.logCalls=true .fi ! .if n \{\ ! .RE ! .\} ! .RE ! .PP ! \-J\fIoption\fR ! .RS 4 ! RMIDを実行しているJavaインタプリタに渡すオプションを指定します。たとえば、\fIrmid\fRコマンドが\fIrmid\&.policy\fRという名前のポリシー・ファイルを使用するように指定するには、\fIrmid\fRのコマンドラインで\fI\-J\fRオプションを使用して、\fIjava\&.security\&.policy\fRプロパティを定義します。次に例を示します。 ! .sp ! .if n \{\ ! .RS 4 ! .\} .nf ! rmid \-J\-Djava\&.security\&.policy\-rmid\&.policy .fi ! .if n \{\ ! .RE ! .\} ! .RE ! .PP ! \-J\-Dsun\&.rmi\&.activation\&.execPolicy=\fIpolicy\fR ! .RS 4 ! 起動グループが実行されることになるJVMの起動に使用するコマンドおよびコマンドライン・オプションをチェックするために、RMIDが採用するポリシーを指定します。このオプションは、Java RMI起動デーモンのOracleの実装のみに存在することに注意してください。コマンドラインにこのプロパティを指定しない場合、結果は\fI\-J\-Dsun\&.rmi\&.activation\&.execPolicy=default\fRを指定した場合と同じになります。\fIpolicy\fRに指定可能な値は、\fIdefault\fR、\fIpolicyClassName\fRまたは\fInone\fRです。 ! .sp ! .RS 4 ! .ie n \{\ ! \h'-04'\(bu\h'+03'\c ! .\} ! .el \{\ ! .sp -1 ! .IP \(bu 2.3 ! .\} ! デフォルト ! .sp ! \fIdefault\fRまたは未指定値の\fIexecPolicy\fRの場合、\fIrmid\fRコマンドが実行できるのは、\fIrmid\fRコマンドが使用するセキュリティ・ポリシー・ファイルの中で、実行する権限が\fIrmid\fRに与えられているコマンドおよびコマンドライン・オプションのみです。デフォルトの実行ポリシーで使用できるのは、デフォルトの起動グループ実装のみです。 ! .sp ! \fIrmid\fRコマンドは、起動グループ用のJVMを起動するときに、そのグループについて登録された起動グループ記述子である\fIActivationGroupDesc\fR内の情報を使用します。グループ記述子は、\fIActivationGroupDesc\&.CommandEnvironment\fRを指定します(省略可能)。これには、起動グループを開始するコマンドと、そのコマンドラインに追加できるコマンドライン・オプションが含まれています。デフォルトでは、\fIrmid\fRコマンドは\fIjava\&.home\fRにある\fIjava\fRコマンドを使用します。グループ記述子には、コマンドラインにオプションとして追加されるプロパティ・オーバーライドも含まれます(\fI\-D<property>=<value>\fRとして定義されます)。\fIcom\&.sun\&.rmi\&.rmid\&.ExecPermission\fR権限は\fIrmid\fRコマンドに、起動グループを開始するためにグループ記述子の\fICommandEnvironment\fRで指定されたコマンドを実行する権限を付与します。\fIcom\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fR権限は起動グループの開始時に、グループ記述子でプロパティ・オーバーライドとして、または\fICommandEnvironment\fRでオプションとして指定されたコマンドライン・オプションを、\fIrmid\fRコマンドが使用することを許可します。\fIrmid\fRコマンドに様々なコマンドおよびオプションを実行する権限を付与する場合、権限\fIExecPermission\fRおよび\fIExecOptionPermission\fRをすべてのコード・ソースに付与する必要があります。 ! .sp ! \fBExecPermission\fR ! .sp ! \fIExecPermission\fRクラスは、起動グループを開始するために\fIrmid\fRコマンドが特定のコマンドを実行する権限を表します。 ! .sp ! \fB構文\fR: ! \fIExecPermission\fRの名前は、\fIrmid\fRコマンドに実行を許可するコマンドのパス名です。スラッシュ(/)およびアスタリスク(*)で終わるパス名は、そのディレクトリに含まれるすべてのファイルを示します。スラッシュはファイル区切り文字\fIFile\&.separatorChar\fRです。スラッシュ(/)およびマイナス符号(\-)で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリ(再帰的に)を示します。パス名に特別なトークン\fI<<ALL FILES>>\fRを指定した場合は、任意のファイルを示します。 ! .sp ! パス名にアスタリスク(*)を指定した場合は、現在のディレクトリ内のすべてのファイルを示します。パス名にマイナス符号(\-)を指定した場合は、現在のディレクトリ内のすべてのファイルおよび(再帰的に)現在のディレクトリに含まれるすべてのファイルとサブディレクトリを示します。 ! .sp ! \fBExecOptionPermission\fR ! .sp ! \fIExecOptionPermission\fRクラスは、起動グループを開始するときに\fIrmid\fRコマンドで特定のコマンドライン・オプションを使用できる権限を表します。\fIExecOptionPermission\fRの名前は、コマンドライン・オプションの値です。 ! .sp ! \fB構文\fR: オプションでは、ワイルドカードが限定的にサポートされます。アスタリスクは、ワイルドカード・マッチを表します。アスタリスク(*)は、オプション名そのものとして使用できます。つまり、任意のオプションを表すことができます。また、オプション名の末尾に使用することもできます。ただし、ドット(\&.)か等号(=)の直後にアスタリスク(*)を指定する必要があります。 ! .sp ! 例: ! \fI*\fRや\fI\-Dmydir\&.*\fRや\fI\-Da\&.b\&.c=*\fRは有効ですが、\fI*mydir\fRや\fI\-Da*b\fRや\fIab*\fRは無効です。 ! .sp ! \fBrmidのポリシー・ファイル\fR ! .sp ! \fIrmid\fRコマンドに様々なコマンドおよびオプションを実行する権限を許可する場合は、権限\fIExecPermission\fRおよび\fIExecOptionPermission\fRをすべてのコード・ソースに付与する必要があります(汎用的に)。これらの権限をチェックするのは\fIrmid\fRコマンドのみなので、これらの権限を汎用的に付与しても安全です。 ! .sp ! \fIrmid\fRコマンドに各種の実行権限を付与するポリシー・ファイルの例を、次に示します。 ! .sp ! .if n \{\ ! .RS 4 ! .\} .nf grant { ! permission com\&.sun\&.rmi\&.rmid\&.ExecPermission ! "/files/apps/java/jdk1\&.7\&.0/solaris/bin/java"; ! permission com\&.sun\&.rmi\&.rmid\&.ExecPermission "/files/apps/rmidcmds/*"; ! permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission ! "\-Djava\&.security\&.policy=/files/policies/group\&.policy"; ! permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission ! "\-Djava\&.security\&.debug=*"; ! permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission ! "\-Dsun\&.rmi\&.*"; }; .fi ! .if n \{\ ! .RE ! .\} ! 最初に付与されている権限は、\fIrmid\fRコマンドに対し、パス名により明示的に指定される\fIjava\fRコマンドの1\&.7\&.0リリースの実行を許可します。デフォルトでは、\fIjava\&.home\fRにあるバージョンの\fIjava\fRコマンドを使用します。\fIrmid\fRコマンドが使用するのと同じバージョンが使用されるため、そのコマンドは、ポリシー・ファイルで指定する必要はありません。2番目の権限は、\fIrmid\fRコマンドに対して、ディレクトリ\fI/files/apps/rmidcmds\fR内の任意のコマンドの実行権限を許可します。 ! .sp ! 3番目に付与されている権限\fIExecOptionPermission\fRは、\fIrmid\fRコマンドに対して、セキュリティ・ポリシー・ファイルを\fI/files/policies/group\&.policy\fRとして定義している起動グループの開始を許可します。次の権限は、起動グループが\fIjava\&.security\&.debug property\fRを使用することを許可しています。最後の権限は、起動グループが\fIsun\&.rmi property\fR名の階層内の任意のプロパティを使用することを許可しています。 ! .sp ! ポリシー・ファイルを指定して\fIrmid\fRコマンドを起動するには、\fIrmid\fRのコマンドラインで\fIjava\&.security\&.policy\fRプロパティを指定する必要があります。次に例を示します。 ! .sp ! \fIrmid \-J\-Djava\&.security\&.policy=rmid\&.policy\fR\&. ! .RE ! .sp ! .RS 4 ! .ie n \{\ ! \h'-04'\(bu\h'+03'\c ! .\} ! .el \{\ ! .sp -1 ! .IP \(bu 2.3 ! .\} ! <policyClassName> ! .sp ! デフォルトの動作では十分な柔軟性が得られない場合、管理者は、\fIrmid\fRの起動時に、\fIcheckExecCommand\fRメソッドが所属するクラスの名前を指定して、\fIrmid\fRコマンドが実行するコマンドをチェックすることができます。 ! .sp ! \fIpolicyClassName\fRには、引数なしのコンストラクタを持ち、次のような\fIcheckExecCommand\fRメソッドを実装しているpublicクラスを指定します。 ! .sp ! .if n \{\ ! .RS 4 ! .\} .nf ! public void checkExecCommand(ActivationGroupDesc desc, String[] command) throws SecurityException; .fi ! .if n \{\ ! .RE ! .\} ! 起動グループを開始する前に、\fIrmid\fRコマンドは、ポリシーの\fIcheckExecCommand\fRメソッドを呼び出します。このとき、起動グループの記述子と、起動グループを開始するための完全なコマンドを含む配列をそのメソッドに渡します。\fIcheckExecCommand\fRが\fISecurityException\fRをスローすると、\fIrmid\fRコマンドはその起動グループを開始せず、オブジェクトの起動を試行している呼出し側には\fIActivationException\fRがスローされます。 ! .RE ! .sp ! .RS 4 ! .ie n \{\ ! \h'-04'\(bu\h'+03'\c ! .\} ! .el \{\ ! .sp -1 ! .IP \(bu 2.3 ! .\} ! none ! .sp ! \fIsun\&.rmi\&.activation\&.execPolicy\fRプロパティの値が\fInone\fRの場合、\fIrmid\fRコマンドは、起動グループを開始するコマンドをまったく検証しません。 ! .RE ! .RE ! .PP ! \-log \fIdir\fR ! .RS 4 ! 起動システム・デーモンがデータベースおよび関連情報を書き込むのに使用するディレクトリの名前を指定します。デフォルトでは、\fIrmid\fRコマンドを実行したディレクトリに、logというログ・ディレクトリが作成されます。 ! .RE ! .PP ! \-port \fIport\fR ! .RS 4 ! レジストリが使用するポートを指定します。起動システム・デーモンは、このレジストリの中で、\fIjava\&.rmi\&.activation\&.ActivationSystem\fRという名前で\fIActivationSystem\fRをバインドします。ローカル・マシン上の\fIActivationSystem\fRは、次のように\fINaming\&.lookup\fRメソッドを呼び出すことによって取得できます。 ! .sp ! .if n \{\ ! .RS 4 ! .\} .nf ! import java\&.rmi\&.*; ! import java\&.rmi\&.activation\&.*; ActivationSystem system; system = (ActivationSystem) ! Naming\&.lookup("//:port/java\&.rmi\&.activation\&.ActivationSystem"); .fi ! .if n \{\ ! .RE ! .\} ! .RE ! .PP \-stop ! .RS 4 ! \fI\-port\fRオプションによって指定されたポートの、現在の\fIrmid\fRコマンドの呼出しを停止します。ポートが指定されていない場合は、このオプションはポート1098で実行されている\fIrmid\fRの呼出しを停止します。 .RE .SH "環境変数" ! .PP CLASSPATH ! .RS 4 ! ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで区切られます。例: ! \fI\&.:/usr/local/java/classes\fR .RE .SH "関連項目" ! .sp ! .RS 4 ! .ie n \{\ ! \h'-04'\(bu\h'+03'\c ! .\} ! .el \{\ ! .sp -1 ! .IP \(bu 2.3 ! .\} ! java(1) ! .RE ! .sp ! .RS 4 ! .ie n \{\ ! \h'-04'\(bu\h'+03'\c ! .\} ! .el \{\ ! .sp -1 ! .IP \(bu 2.3 ! .\} ! Setting the Class Path ! .RE ! .br ! 'pl 8.5i ! 'bp