rmid - Java RMI 起動システムデーモン

rmid で起動システムデーモンを開始すると、オブジェクトを仮想マシン (VM) に登録して起動できるようになります。

形式

rmid [options]

説明

rmid ツールは、起動システムデーモンを開始します。起動システムデーモンを開始してからでないと、起動可能オブジェクトを起動システムに登録したり、VM 内で起動したりすることができません。起動可能なリモートオブジェクトを使ったプログラムの作成方法の詳細は、「Java RMI 仕様」および「起動のチュートリアル」を参照してください。

デーモンを起動するには、次のように、セキュリティーポリシーファイルを指定して rmid コマンドを実行します。

    rmid -J-Djava.security.policy=rmid.policy

注:rmid の Sun の実装を実行する場合、デフォルトでは、セキュリティーポリシーファイルを指定する必要があります。それは、起動グループ用に VM を起動するために各 ActivationGroupDesc 内の情報を使用できるかどうかを rmid が検証できるようにするためです。特に、ActivationGroupDesc のコンストラクタに渡される CommandEnvironment や任意の Properties によって指定されるコマンドおよびオプションは、rmid のセキュリティーポリシーファイルの中で明示的に許可することが必要になりました。sun.rmi.activation.execPolicy プロパティーの値は、起動グループ用に VM を起動するために ActivationGroupDesc 内の情報を使用できるかどうかを判断するときに rmid が使用するポリシーを決定します。

rmid をデフォルト設定で実行すると、次のような処理が行われます

レジストリにほかのポートを指定するには、rmid の起動時に -port オプションを指定しなければなりません。次に例を示します。

    rmid -J-Djava.security.policy=rmid.policy -port 1099

このコマンドは、起動システムデーモンを開始し、レジストリのデフォルトポート 1099 でレジストリを開始します。

inetd/xinetd からの rmid の起動

rmid をコマンド行から開始するには、inetd (Solaris の場合)、または xinetd (Linux) を構成して rmid を必要に応じて開始する方法もあります。

rmid を開始すると、System.inheritedChannel メソッドを呼び出して、継承されたチャンネル (inetd/xinetd から継承) を取得しようとします。継承されたチャンネルが null であるか、java.nio.channels.ServerSocketChannel のインスタンスでなかった場合、rmid はそのチャンネルは inetd/xinetd によって起動されたものではないと判断し、前述のように起動します。

継承されたチャンネルが ServerSocketChannel インスタンスである場合、rmid は、自分がエクスポートするリモートオブジェクト (すなわち、java.rmi.activation.ActivationSystem がバインドされているレジストリと java.rmi.activation.Activator リモートオブジェクト) に対する要求を受信するサーバーソケットとして、ServerSocketChannel から取得した java.net.ServerSocket を使用します。このモードでは、rmid の動作は、次の点を除いて、コマンド行から起動した場合と同じです。

必要に応じてサービスを開始するように設定する詳細については、inetd (Solaris) または xinetd (Linux) のマニュアルページを参照してください。

オプション

-C<someCommandLineOption>
rmid の子プロセス (起動グループ) が作成されたときに、それぞれの子プロセスにコマンド行引数として渡されるオプションを指定します。たとえば、次のように指定すると、起動システムデーモンによって生成される各仮想マシンにプロパティーを渡すことができます。
    rmid -C-Dsome.property=value
コマンド行引数を子プロセスに渡す機能は、デバッグを行う場合に便利です。たとえば、次のようなコマンドを実行できます。
    rmid -C-Djava.rmi.server.logCalls=true
このコマンドにより、すべての子 VM でサーバー呼び出しのログが作成されるようになります。

-J<someCommandLineOption>
rmid を実行している java インタプリタに渡すオプションを指定します。たとえば、rmidrmid.policy という名前のポリシーファイルを使用するように指定するには、rmid のコマンド行で -J オプションを使って、java.security.policy プロパティーを定義します。次に例を示します。
    rmid -J-Djava.security.policy=rmid.policy
-J-Dsun.rmi.activation.execPolicy=<policy>
起動グループが実行されることになる VM の起動に使用するコマンドおよびコマンド行オプションをチェックするために、rmid が採用するポリシーを指定します。このオプションは、Java RMI 起動デーモンの Sun の実装だけに存在することに注意してください。コマンド行にこのプロパティーを指定しない場合、結果は -J-Dsun.rmi.activation.execPolicy=default を指定した場合と同じになります。<policy> に指定可能な値は、default<policyClassName>、または none です。それぞれの値について、このあと説明します。

-log dir
起動システムデーモンがデータベースおよび関連情報を書き込むのに使うディレクトリの名前を指定します。デフォルトでは、rmid コマンドを実行したディレクトリに、log というログディレクトリが作成されます。

-port port
rmid のレジストリが使うポートを指定します。起動システムデーモンは、このレジストリの中で、java.rmi.activation.ActivationSystem という名前で ActivationSystem をバインドします。したがって、ローカルマシン上の ActivationSystem は、次のように Naming.lookup メソッドを呼び出すことによって取得できます。
    import java.rmi.*; 
    import java.rmi.activation.*;

    ActivationSystem system; system = (ActivationSystem)
    Naming.lookup("//:port/java.rmi.activation.ActivationSystem");
-stop
-port オプションによって指定されたポートの、現在の rmid 呼び出しを停止します。ポートが指定されていない場合は、ポート 1098 で実行されている rmid を停止します。

環境変数

CLASSPATH
ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。たとえば、
    .:/usr/local/java/classes

関連項目

rmicCLASSPATHjava


Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.
連絡先