sun.rmi プロパティ



警告:ここで説明するプロパティは、サポート対象外であり、随時変更される可能性があります。また、Sun Microsystems が提供する Java (TM) Remote Method Invocation (Java RMI) の特定の実装にしか存在しません。これらのプロパティは Java RMI public API の一部ではありません。Java RMI public API に含まれるプロパティの一覧は、java.rmi プロパティ」のページを参照してください。


:明言されない限り、これらのプロパティの出力はすべて System.err に送信されます。

名前の末尾に「.logLevel」の付く各プロパティが保持できる値には、「SILENT」、「BRIEF」、および「VERBOSE」があります。これらの値は、大文字と小文字が区別されず、また最初の n 文字に省略できます。n は 1 以上の値です。値が指定されない場合、これらのプロパティはデフォルト値である「SILENT」を保持します。「BRIEF」値に設定すると、対応する Logger がレベル Level.FINE に設定され、「VERBOSE」値に設定すると、対応する Logger がレベル Level.FINER に設定されます。ログ記録用のこれらの sun.rmi.* システムプロパティを使用するよりも、ログ構成ファイルを使用することをお勧めします。

ログメッセージは、System.err に送信されます。たとえば、出力を "transport" ログに送信するとプロパティで指定された場合、java.rmi.server.LogStream.log("transport") により返される LogStream にログメッセージが送信されることを意味します。送信先が他に設定されていない限り、LogStream はメッセージを System.err に送信します。


rmid に設定可能なプロパティ

sun.rmi.activation.execPolicy (1.3 以降)
このプロパティの値は、起動グループ用に仮想マシンを起動するために ActivationGroupDesc 内の情報を使用できるかどうかを判断するときに、rmid が使用するポリシーを決定します。このプロパティに指定できる値は、defaultnone、または ActivationGroupDesc 情報を検証するために呼び出される checkExecCommand メソッドを実装するクラスの、完全修飾名です。詳細は、rmid のツールドキュメント [Solaris および Linux 用、Windows 用] を参照してください。

sun.rmi.activation.execTimeout (1.2 以降)
このプロパティの値は、生成された起動グループが起動するまでの起動システムの待機時間を (ミリ秒で) 表します。このプロパティを設定することにより、起動グループが起動するまで rmid が待機する最大時間を短くしたり、長くしたりできます。デフォルト値は 30000 ミリ秒 (30 秒) です。

sun.rmi.activation.groupThrottle (5.0 以降)
このプロパティの値は、rmid により「生成されたがアクティブではない」状態を許可される起動グループ VM の最大数を表します。より多くの VM を起動する必要がある場合、VM は、生成中の 1 つが成功するか、タイムアウトになるまで待機します。このプロパティは、アクティブな VM の最大数を制限しません。これは、オペレーティングシステムの制限にまで達しないよう、活動の急激な増加を回避することを目的としています。このプロパティの値を低く設定すると rmid の起動時間が長くなり、高く設定すると起動時間が短くなります。ただし、設定値が高すぎると、システムリソースが不足するために、rmid がクラッシュする可能性があります。デフォルト値は 3 です。以前のリリースでこのプロパティに付けられた名前の sun.rmi.rmid.maxstartgroup は、現在サポートされません。

sun.rmi.activation.groupTimeout (5.0 以降)
このプロパティの値は、rmid が起動グループのプロセスを破壊したのち、新しい起動グループを生成する前に待機する時間 (ミリ秒) を表します。デフォルト値は 60000 ミリ秒 (60 秒) です。

sun.rmi.activation.snapshotInterval (1.2 以降)
このプロパティは、起動システムが、その状態のスナップショットをディスク上の rmid ログファイルに直列化するまでの待機時間中の更新回数を制御します。「更新」とは、最後のスナップショット作成時以降の、起動システムの状態 (Activatable オブジェクトの登録など) の持続的な変化を指します。rmid の再起動をより迅速に行う場合 (ログのスナップショット作成頻度を上げることにより)、または rmid の動作効率を向上させる (ログのスナップショット作成頻度を下げることにより) 場合に、このプロパティ値を変更します。このプロパティの値は、正の整数です。デフォルト値は 200 です。

sun.rmi.log.debug (1.2 以降)
この値が true の場合、rmid のロギング動作は System.err に送信されます。

sun.rmi.server.activation.debugExec (1.2 以降)
この値が true の場合、起動システムは、起動グループの生成に使用されるコマンド行にデバッグ情報を出力します。デフォルト値は false です。このため、デバッグ情報は出力されません。

リモートオブジェクトをエクスポートする VM の設定に有用なプロパティ

sun.rmi.dgc.ackTimeout (1.4 以降)
このプロパティの値は、リモート参照が完全に受け取られて処理されたという確認通知をクライアントから受け取るまでに、サーバ側 Java RMI ランタイムが、リモートメソッドの呼び出しの結果として現在の仮想サーバから返されたリモートオブジェクト (またはリモートオブジェクトへの参照) への強い参照を行う時間 (ミリ秒単位) を表します。このタイムアウトは、失敗状態 (クライアントが確認通知を送信できない状態) にのみ適用されます。この値を小さく設定しすぎると、リモートオブジェクトへの既知の参照がリモートメソッドの呼び出しの結果として送信中の参照だけである場合、リモートオブジェクトのガベージコレクトが早く行われてしまうというリスクが高くなる場合があります。最大値は Long.MAX_VALUE です。デフォルト値は 300000 ミリ秒 (5 分) です。

sun.rmi.dgc.checkInterval (1.1 以降)
このプロパティの値は、Java RMI ランタイムが期限切れの DGC リースをチェックする間隔を (ミリ秒で) 表します。デフォルト値は 300000 ミリ秒 (5 分) です。

sun.rmi.dgc.logLevel (1.1 以降)
このプロパティは、DGC リースの許可、更新、終了期限に関連した、着信呼び出しと送信呼び出しのロギングを制御します。出力の送信先は、"dgc" ログです。

sun.rmi.dgc.server.gcInterval (1.2 以降)
アクセス不可能なリモートオブジェクトを適切なタイミングで確実にアンエクスポートまたはガベージコレクトする必要がある場合、このプロパティの値は、Java RMI ランタイムが許可するローカルヒープのガベージコレクトの最大間隔を (ミリ秒で) 表します。デフォルト値は 60000 ミリ秒 (60 秒) です。

sun.rmi.loader.logLevel (1.2 以降)
引数または戻り値の非整列化の結果として、Java RMI ランタイムがクラスのロードを試みる場合にはいつでも、このプロパティは、各クラス名およびコードベースのロギングを制御します。このプロパティは、出力を "loader" ログに送信します。

1.3 では、出力されるコードベースが注釈付きのコードベースでも、必ずしもクラスのロード元のコードベースではない場合もあることに留意してください。Java RMI クラスローダは、クラスのロードを現行スレッドのコンテキストクラスローダまで遅らせます。現行スレッドのコンテキストクラスローダは、クラスを注釈付きのコードベースからではなく、CLASSPATH からロードします。この問題は、1.4 では存在しません。

sun.rmi.server.exceptionTrace (1.2 以降)
このプロパティは、ディスパッチされた着信リモート呼び出しによりスローされる例外およびエラーからの、サーバ側スタックトレース出力を制御します。この値が true の場合、例外スタックトレースが出力されます。デフォルト (false) では、例外およびエラースタックトレースは出力されません。

sun.rmi.server.suppressStackTraces (1.4 以降)
この値を true に設定すると、サーバ側 Java RMI ランタイム実装は、リモート呼び出しの結果として現在の仮想マシンからスローされるすべての例外のスタックトレースをクリアします。このプロパティは、特定の Java RMI サーバアプリケーションで、パフォーマンスや機密性の理由により、着信リモート呼び出しの結果として (J2SE 1.4 での例外のデフォルトの直列化形式の一部として) 整列化される例外がサーバ側スタックトレースに含まれないようにする必要がある場合に役に立ちます。

sun.rmi.transport.logLevel (1.1 以降)
このプロパティは、トランスポート層全体の詳細なロギングを制御します。出力の送信先は、"transport" ログです。

sun.rmi.transport.tcp.localHostNameTimeOut (1.1.7 以降)
このプロパティの値は、Java RMI ランタイムがローカルホストの完全指定ドメイン名を取得するための待機時間を (ミリ秒で) 表します。デフォルト値は 10000 ミリ秒 (10 秒) です。

sun.rmi.transport.tcp.logLevel (1.1 以降)
このプロパティは、TCP 固有のトランスポートサブレイヤの詳細なロギングを提供します。出力の送信先は、"tcp" ログです。

sun.rmi.transport.tcp.readTimeout (1.2.2 以降)
このプロパティの値は、Java RMI ランタイムが使用する、着信 TCP 接続のアイドルタイムアウト時間を (ミリ秒で) 表します。値は、java.net.Socket.setSoTimeout に渡されます。クライアントが、本来の動作と異なり、不使用の接続を削除しない場合にのみ使用されます (sun.rmi.transport.connectionTimeout を参照)。デフォルト値は 2*3600*1000 ミリ秒 (2 時間) です。

リモートメソッド呼び出しを実行する VM の設定に有用なプロパティ

sun.rmi.client.logCalls (1.4 以降)
プロパティの値が true の場合、sun.rmi.client.call ロガーはレベル Level.FINER に設定されます。リモート呼び出しは、レベル Level.FINER でログ記録され、リモート呼び出しからスローされた例外はレベル Level.FINE でログ記録されます。

sun.rmi.dgc.cleanInterval (1.1 以降)
このプロパティの値は、失敗した DGC "clean" 呼び出しを再度実行するまでの Java RMI ランタイムの待機時間の最大値を (ミリ秒で) 表します。デフォルト値は 180000 ミリ秒 (3 分) です。

sun.rmi.dgc.client.gcInterval (1.2 以降)
アクセス不可能なリモート参照に対する DGC clean 呼び出しを適切なタイミングで確実に送信する必要がある場合、このプロパティの値は、Java RMI ランタイムが許可するローカルヒープのガベージコレクトの最大間隔を (ミリ秒で) 表します。デフォルト値は 60000 ミリ秒 (60 秒) です。

sun.rmi.loader.logLevel (1.2 以降)
引数または戻り値の非整列化の結果として、Java RMI ランタイムがクラスのロードを試みる場合にはいつでも、このプロパティは、各クラス名およびコードベースのロギングを制御します。このプロパティは、出力を "loader" ログに送信します。

1.3 では、出力されるコードベースが注釈付きのコードベースでも、必ずしもクラスのロード元のコードベースではない場合もあることに留意してください。Java RMI クラスローダは、クラスのロードを現行スレッドのコンテキストクラスローダまで遅らせます。現行スレッドのコンテキストクラスローダは、クラスを注釈付きのコードベースからではなく、CLASSPATH からロードします。この問題は、1.4 では存在しません。

sun.rmi.server.logLevel (1.1 以降)
このプロパティは、送信呼び出しに関連するロギング (接続の再利用情報を含む) を制御します。出力の送信先は、"transport" ログです。

sun.rmi.transport.connectionTimeout (1.1.6 以降)
このプロパティの値は、Java RMI ランタイムがソケット接続の開放を許可する (閉じる) 前に、 ソケット接続が「不使用」状態になる期間を (ミリ秒で) 表します。デフォルト値は 15000 ミリ秒 (15 秒) です。sun.rmi.transport.tcp.readTimeout も参照してください。

sun.rmi.transport.logLevel (1.1 以降)
このプロパティは、トランスポート層全体の詳細なロギングを制御します。出力の送信先は、"transport" ログです。

sun.rmi.transport.proxy.connectTimeout (1.1 以降)
このプロパティの値は、接続の試み (createSocket) が完了するまで、HTTP を使ってサーバへの接続を試みる前の、Java RMI ランタイムの待機時間の最大値を (ミリ秒で) 表します。このプロパティが使用されるのは、http.proxyHost プロパティが設定され、かつ java.rmi.server.disableHttp の値が false の場合だけです。デフォルト値は 15000 ミリ秒 (15 秒) です。

sun.rmi.transport.proxy.eagerHttpFallback (1.4.1 以降)
この値が true であり、java.rmi.server.disableHttp システムプロパティが設定されていないと、デフォルトの global RMISocketFactory は、最初の (直接) 接続試行から java.net.SocketException がスローされたときに、HTTP トンネリングへフォールバックします。これは、最初の接続試行が java.net.UnknownHostException または java.net.NoRouteToHostException をスローしたときのみ HTTP トンネリングへフォールバックするデフォルトの動作とは対照的です。

この設定は、承認されないポートへの接続試行を無視する代わりに拒否するファイアウォールを取り扱うときに、有用である場合があります。そのときは、クライアントのデフォルトの global RMISocketFactory 内が java.net.ConnectionException になります。このシステムプロパティが有効にされていないと、UnknownHostException でも NoRouteToHostException でもないため、このような ConnectionException が HTTP フォールバックのトリガになることはありません。 ただし、このシステムプロパティが有効にされている場合は、ConnectionExceptionSocketException のサブクラスであるため、ConnectionException が HTTP フォールバックを引き起こします。

sun.rmi.transport.proxy.logLevel (1.1 以降)
このプロパティは、デフォルトの RMISocketFactory クラスが使用される場合に、イベント (createSocket および createServerSocket) のロギングを制御します。これは、HTTP を介して Java RMI を使用するアプリケーションで有用なロギングタイプです。このプロパティでは、カスタムソケットファクトリ内のイベントはログに記録されません。"proxy" ログに送信されるメッセージもあれば、"transport" ログに送信されるメッセージもあります。

sun.rmi.transport.tcp.handshakeTimeout (1.4 以降)
このプロパティの値は、クライアント側 Java RMI ランタイムが、新しい JRMP 接続の確立時に最初のハンドシェークデータ (プロトコルの確認) を読み取るときに、ソケットの読み取りタイムアウトとして使用する時間 (ミリ秒単位) を表します。このプロパティは、リモートホストのポートで待機するエンティティが実際には Java RMI サーバではないため、またはそのサーバが何らかの理由で正しく機能していないために、リモートサーバが受け入れた TCP 接続が実際には使用できないと決定するまで Java RMI ランタイムが待つ時間を設定するために使用されます。最大値は Integer.MAX_VALUE で、ゼロの値はタイムアウトの制限がないことを示します。デフォルト値は 60000 (1 分) です。

sun.rmi.transport.tcp.logLevel (1.1 以降)
このプロパティは、TCP 固有のトランスポートサブレイヤの詳細なロギングを提供します。出力の送信先は、"tcp" ログです。
これらのチュートリアルに関して、コメントや提案をお寄せください。その際は、タイトルを「sun.rmi properties FAQ」として、rmi-comments@java.sun.com までお送りください。


Copyright © 2004 Sun Microsystems, Inc.All Rights Reserved.
コメントの送付先:rmi-comments@java.sun.com
Sun