SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG
DONATE


YUM REPOSITORY

 
 

MAN page from Fedora 13 matlab-7.4.0.336-4.i386.rpm

rmid

Section: User Commands (1)
Updated: 2004 年 6 月 22 日
Index 

名前

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

形式

rmid [options] 

機能説明

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

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


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

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

rmidをデフォルト設定で実行することにより、以下が行われます。

*
このコマンドはアクティベータを起動するとともにデフォルトポートの1098で内部レジストリを開始し、
*
ActivationSystemjava.rmi.activation.ActivationSystem という名前に内部レジストリ上でバインドします。
レジストリにほかのポートを指定するには、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 の場合、rmid はコマンド行から起動されており、前述のように起動します。

継承チャンネルが java.io.channels.ServerSocketChannel のインスタンスでない場合、rmid は終了します。

継承チャンネルが ServerSocketChannel インスタンスの場合、rmid は ServerSocketChannel から取得した java.net.ServerSocket を、エクスポートするリモートオブジェクト (java.rmi.activation.ActivationSystem がバインドされるレジストリと java.rmi.activation.Activator リモートオブジェクト) に対する要求を受け入れるサーバソケットとして使用します。

inetd/xinetd から起動した場合、rmid ツールの動作は、次のことを除いて、コマンド行から起動した場合と同じです。

* System.err に表示される出力はファイルに
リダイレクトされます。このファイルは、接頭辞「rmid-err」と接尾辞「tmp」を使用して java.io.tmpdir システムプロパティ (通常 /var/tmp または /tmp) で指定したディレクトリにあります。
* -port オプションは許可されていません。このオプションが
指定されている場合、rmid はエラーメッセージを表示して終了します。
* -log オプションは必須です。このオプションが
指定されていない場合、rmid はエラーメッセージを表示して終了します。

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

オプション

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


     rmid -C-Dsome.property=value

コマンド行引数を子プロセスに渡す機能は、デバッグを行う際に便利です。たとえば、次のようなコマンドを実行できます。


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

このコマンドによって、すべての子 JVM でサーバ呼び出しのログが残るようになります。

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


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

-J-Dsun.rmi.activation.execPolicy=policy
起動グループの実行対象となる JVM の起動に使用するコマンドおよびコマンド行オプションを検査するために、rmidが採用するポリシーを指定します。このオプションは、Sun の RMI 起動デーモン実装だけに存在することに注意してください。コマンド行にこのプロパティを指定しない場合、結果は -J-Dsun.rmi.activation.execPolicy=defaultを指定した場合と同じになります。policyに指定可能な値は、defaultpolicyClassName、または none です。.RS
*
default (または、このプロパティを指定しない場合)。デフォルトのexecPolicyでは、使用するセキュリティポリシーファイル内のコマンドおよびオプションを実行する権限がrmidに与えられる場合にのみ、rmidは特定のコマンド行オプションを指定してコマンドを実行できます。defaultの実行ポリシーを使用できるのは、デフォルトの起動グループ実装だけです。

rmidは、起動グループの JVM を起動する際、その登録された起動グループ記述子である ActivationGroupDesc内の情報を使用します。グループ記述子では、オプションのActivationGroupDesc.CommandEnvironmentを指定します。これには、起動グループを開始する「コマンド」、およびコマンド行に追加する任意のコマンド行「オプション」が含まれます。デフォルトでは、rmidjava.homeにあるjavaコマンドを使用します。グループ記述子には、次に示すように、オプションとしてコマンド行に追加される「プロパティ」オーバーライドも含まれます。


     -Dproperty=value

アクセス権com.sun.rmi.rmid.ExecPermissionを使用すると、rmidに対し、グループ記述子のCommandEnvironmentで指定されたコマンドを実行して起動グループを開始する権限を与えることができます。アクセス権 com.sun.rmi.rmid.ExecOptionPermissionを使用すると、起動グループを開始するときに、グループ記述子でプロパティオーバーライドとして指定されたコマンド行オプション、またはCommandEnvironmentでオプションとして指定されたコマンド行オプションをrmidから使用できます。

rmidにさまざまなコマンドおよびオプションを実行する権限を与える場合、アクセス権ExecPermissionおよびExecOptionPermissionを普遍的に (つまり、すべてのコードソースに対して) 許可する必要があります。

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

構文
ExecPermissionの「名前」は、rmidに実行権限を与えるコマンドのパス名です。「/*」(「/」はファイル区切り文字、つまり File.separatorChar) で終わるパス名は、そのディレクトリに含まれるすべてのファイルを表します。「/-」で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を表します。パス名に特別なトークン「<<ALL FILES>>」を指定した場合は、任意のファイルに一致します。

注: 「*」が 1 つだけ指定されたパス名は、現在のディレクトリ内のすべてのファイルを表し、「-」が 1 つだけ指定されたパス名は、現在のディレクトリ内のすべてのファイルと、現在のディレクトリに含まれるすべてのファイルとサブディレクトリ (再帰的に) を表します。

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

構文
オプションでは、制限付きワイルドカード指定がサポートされます。アスタリスクは、ワイルドカードマッチングを指定します。アスタリスクは、オプション名自体を表す (つまり、すべてのオプションに一致する) ために使用できます。また、「.」および「=」の次に指定する場合にのみ、オプション名の最後にアスタリスクを使用できます。

例を示します。「*」、「-Dfoo.*」、「-Da.b.c=*」は有効です。「*foo」、「-Da*b」、「ab*」は無効です。

rmid のポリシーファイル
rmidにさまざまなコマンドおよびオプションを実行する権限を与える場合は、アクセス権ExecPermissionおよびExecOptionPermissionを普遍的に (つまり、すべてのコードソースに対して) 許可する必要があります。これらのアクセス権を検査するのはrmidだけであるため、普遍的に許可しても安全です。

rmidにさまざまな実行権限を許可するポリシーファイルの例を、次に示します。

grant {    permission com.sun.rmi.rmid.ExecPermission        "/files/apps/java/jdk1.2.2/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.*";};

最初の 2 つのアクセス権は、rmidに対し、パス名により明示された 1.2.2 バージョンのjavaコマンドを実行する許可を与えます。デフォルトでは、java.homeにあるjavaコマンドのバージョン (rmidが使用するのと同じもの) が使用されるため、ポリシーファイルで指定する必要はありません。3 番目のアクセス権は、rmidに対し、ディレクトリ/files/apps/rmidcmds内の任意のコマンドを実行する権限を与えます。

4 番目に許可されたアクセス権ExecOptionPermissionは、rmid に対し、セキュリティポリシーファイルを/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 で引数を必要としないコンストラクタとともに public クラスを指定します。また、次の checkExecCommandメソッド実装も指定します。

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
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"
ユーザ定義クラスへのパスをシステムに通知するために使用します。ディレクトリはコロンで区切ります。以下に例を示します。

example% .:/usr/local/java/classes
 

関連項目

rmic(1)

次については、java.sun.comを参照または検索してください。

RMI の仕様 @
http://java.sun.com/j2se/1.5/docs/guide/rmi/spec/rmiTOC.doc.html :英語版


 

Index

名前
形式
機能説明
inetd/xinetd からの rmid の起動
オプション
環境
関連項目

This document was created byman2html,using the manual pages.