Java Platform, Standard Editionツール・リファレンス
目次      

rmid

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

形式

rmid [options]

options

コマンド行オプション。「オプション」を参照してください。

説明

rmidコマンドは、起動システム・デーモンを開始します。起動システム・デーモンを開始してからでないと、起動可能オブジェクトを起動システムに登録したり、JVM内で起動したりすることができません。起動可能なオブジェクトを使用したプログラムを作成する方法の詳細は、「アクティベーションの使用」チュートリアル(http://docs.oracle.com/javase/jp/8/technotes/guides/rmi/activation/overview.html)を参照してください。

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

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

rmidコマンドのOracleの実装を実行する場合、デフォルトでは、起動グループ用にJVMを開始する際に各ActivationGroupDesc内の情報を使用できるかどうかをrmidコマンドが検証できるように、セキュリティ・ポリシー・ファイルを指定する必要があります。特に、ActivationGroupDescコンストラクタに渡されるCommandEnvironmentや任意のプロパティによって指定されるコマンドおよびオプションは、rmidコマンドのセキュリティ・ポリシー・ファイルで明示的に許可されることが必要になりました。sun.rmi.activation.execPolicyプロパティの値によって、起動グループ用にJVMを開始する際にActivationGroupDesc内の情報を使用できるかどうかを判断するときにrmidコマンドが使用するポリシーが決定されます。詳細は、-J-Dsun.rmi.activation.execPolicy=policyオプションの説明を参照してください。

rmidコマンドを実行すると、アクティベータおよび内部レジストリがデフォルト・ポート1098で開始され、この内部レジストリ内でActivationSystemjava.rmi.activation.ActivationSystemという名前にバインドされます。

レジストリに代替のポートを指定するには、rmidコマンドを実行するときに-portオプションを指定する必要があります。たとえば、次のコマンドは、起動システム・デーモンおよびレジストリをレジストリのデフォルト・ポート1099で開始します。

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

オプション

-Coption

rmidコマンドの子プロセス(起動グループ)が作成されたときに、それぞれの子プロセスにコマンド行引数として渡されるオプションを指定します。たとえば、次のように指定すると、起動システム・デーモンによって生成される各仮想マシンにプロパティを渡すことができます。

rmid -C-Dsome.property=value

コマンド行引数を子プロセスに渡す機能は、デバッグを行う場合に便利です。たとえば、次のコマンドを使用すると、すべての子JVMでサーバー呼出しのロギングが可能になります。

rmid -C-Djava.rmi.server.logCalls=true
-Joption

RMIDを実行しているJavaインタプリタに渡されるオプションを指定します。たとえば、rmidコマンドがrmid.policyという名前のポリシー・ファイルを使用するように指定するには、rmidのコマンド行で-Jオプションを使用して、java.security.policyプロパティを定義します。次に例を示します。

rmid -J-Djava.security.policy-rmid.policy
-J-Dsun.rmi.activation.execPolicy=policy

起動グループが実行されるJVMを開始する際に使用されるコマンドおよびコマンド行オプションをチェックするために、RMIDが採用するポリシーを指定します。このオプションは、Java RMI起動デーモンのOracleの実装のみに存在することに注意してください。コマンド行にこのプロパティを指定しない場合、結果は-J-Dsun.rmi.activation.execPolicy=defaultを指定した場合と同じになります。policyに指定可能な値は、defaultpolicyClassNameまたはnoneです。

  • default

    execPolicyの値がdefaultまたは指定されていない場合、rmidコマンドが使用するセキュリティ・ポリシー・ファイル内のコマンドおよびオプションを実行するためのアクセス権がrmidコマンドに付与されているときにのみ、rmidコマンドは特定のコマンド行オプションを付けてコマンドを実行できます。デフォルトの実行ポリシーで使用できるのは、デフォルトの起動グループ実装のみです。

    rmidコマンドは、起動グループの登録済起動グループ記述子であるActivationGroupDesc内の情報を使用して、そのグループ用のJVMを開始します。グループ記述子は、起動グループを開始する際に実行するコマンドと、そのコマンド行に追加されるコマンド行オプションが含まれるオプションのActivationGroupDesc.CommandEnvironmentを指定します。デフォルトでは、rmidコマンドは、java.homeにあるjavaコマンドを使用します。グループ記述子には、-D<property>=<value>のように定義されるオプションとしてコマンド行に追加されるプロパティ・オーバーライドも含まれています。アクセス権com.sun.rmi.rmid.ExecPermissionを使用すると、起動グループを開始する際に、グループ記述子のCommandEnvironmentで指定されたコマンドを実行するためのアクセス権がrmidコマンドに付与されます。アクセス権com.sun.rmi.rmid.ExecOptionPermissionを使用すると、rmidコマンドは起動グループを開始する際に、グループ記述子でプロパティ・オーバーライドとして指定されたコマンド行オプション、またはCommandEnvironmentでオプションとして指定されたコマンド行オプションを使用できるようになります。様々なコマンドおよびオプションを実行するためのアクセス権をrmidコマンドに付与するときは、すべてのコード・ソースにアクセス権ExecPermissionおよびExecOptionPermissionを付与する必要があります。

    ExecPermission

    ExecPermissionクラスは、起動グループを開始する際に、rmidコマンドが特定のコマンドを実行するためのアクセス権を表します。

    構文: ExecPermissionの名前は、rmidコマンドに実行アクセス権を付与するためのコマンドのパス名です。スラッシュ(/)とアスタリスク(*)で終わるパス名は、そのディレクトリに含まれるすべてのファイルを示します。ここで、スラッシュはファイル区切り文字File.separatorCharです。スラッシュ(/)とマイナス記号(-)で終わるパス名は、(再帰的に)そのディレクトリに格納されているすべてのファイルとサブディレクトリを示します。特別なトークン<<ALL FILES>>で構成されるパス名は、任意のファイルと一致します。

    アスタリスク(*)で構成されるパス名は、現在のディレクトリ内にあるすべてのファイルを示します。マイナス記号(-)で構成されるパス名は、現在のディレクトリ内にあるすべてのファイル、および(再帰的に)現在のディレクトリに格納されているすべてのファイルおよびサブディレクトリを示します。

    ExecOptionPermission

    ExecOptionPermissionクラスは、起動グループを開始する際に、rmidコマンドが特定のコマンド行オプションを使用するためのアクセス権を表します。ExecOptionPermissionの名前は、コマンド行オプションの値です。

    構文: オプションでは、ワイルドカードが限定的にサポートされます。アスタリスクは、ワイルドカードの一致を表し、オプション名自体として使用したり(任意のオプションと一致)、オプション名の末尾に使用したりできますが、アスタリスク(*)がドット(.)または等号(=)の後に続く場合にかぎります。

    たとえば、*-Dmydir.*または-Da.b.c=*は有効ですが、*mydir-Da*bまたはab*は無効です。

    rmidのポリシー・ファイル

    rmidコマンドに様々なコマンドおよびオプションを実行するためのアクセス権を付与する場合は、アクセス権ExecPermissionおよびExecOptionPermissionを汎用的にすべてのコード・ソースに付与する必要があります。これらのアクセス権をチェックするのはrmidコマンドだけなので、これらのアクセス権を汎用的に付与しても安全です。

    rmidコマンドに様々な実行アクセス権を付与するポリシー・ファイルの例を、次に示します。

    grant {
        permission com.sun.rmi.rmid.ExecPermission
            "c:\\files\\apps\\java\\jdk1.7.0\\win\\bin\\java";
     
        permission com.sun.rmi.rmid.ExecPermission
            "c:\\files\\apps\\rmidcmds\\*";
     
        permission com.sun.rmi.rmid.ExecOptionPermission
            "-Djava.security.policy=c:\\files\\policies\\group.policy";
     
        permission com.sun.rmi.rmid.ExecOptionPermission
            "-Djava.security.debug=*";
     
        permission com.sun.rmi.rmid.ExecOptionPermission
            "-Dsun.rmi.*";
    };
    

    1番目に付与されているアクセス権を使用すると、rmidコマンドは明示的なパス名で指定されたjavaコマンドの1.7.0リリースを実行できます。デフォルトでは、java.homeで見つかったバージョンのjavaコマンド(rmidコマンドが使用するバージョンと同じ)が使用されるため、ポリシー・ファイルで指定する必要はありません。2番目のアクセス権を使用すると、rmidコマンドはc:\files\apps\rmidcmds\ディレクトリ内の任意のコマンドを実行できます。

    3番目に付与されているアクセス権ExecOptionPermissionを使用すると、rmidコマンドはセキュリティ・ポリシー・ファイルをc:\files\policies\group.policyとして定義している起動グループを開始できます。その次に付与されているアクセス権を使用すると、起動グループがjava.security.debugプロパティを使用できます。最後のアクセス権を使用すると、起動グループがsun.rmiというプロパティ名の階層内の任意のプロパティを使用できます。

    ポリシー・ファイルを指定してrmidコマンドを開始するには、rmidのコマンド行でjava.security.policyプロパティを指定する必要があります。次に例を示します。

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

  • <policyClassName>

    デフォルトの動作では十分な柔軟性が得られない場合、管理者はrmidコマンドの開始時に、checkExecCommandメソッドが所属するクラスの名前を指定することで、rmidで実行されるコマンドをチェックできます。

    policyClassNameには、引数のないpublicコンストラクタを持ち、次のようなcheckExecCommandメソッドを実装しているpublicクラスを指定します。

     public void checkExecCommand(ActivationGroupDesc desc, String[] command)
            throws SecurityException;
    

    起動グループを開始する前に、rmidコマンドは、ポリシーのcheckExecCommandメソッドを呼び出し、そのメソッドに起動グループ記述子と、起動グループを開始するための完全なコマンドを含む配列を渡します。checkExecCommandSecurityExceptionをスローすると、rmidコマンドはその起動グループを開始せず、オブジェクトの起動を試行している呼出し側にActivationExceptionがスローされます。

  • none

    sun.rmi.activation.execPolicyプロパティの値がnoneの場合、rmidコマンドは、起動グループを開始するコマンドをまったく検証しません。

-log dir

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

-port port

レジストリで使用されるポートを指定します。起動システム・デーモンは、このレジストリの中で、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

ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはセミコロンで区切られます(例: .;C:\usr\local\java\classes)。

関連項目

目次      

Copyright © 1993, 2019, Oracle and/or its affiliates. All rights reserved.