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が使用するポリシーを決定します。このプロパティに指定できる値は、default、none、または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です。このため、デバッグ情報は出力されません。
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 時間) です。
これらのチュートリアルに関して、コメントや提案をお寄せください。その際は、タイトルを「sun.rmi properties FAQ」として、
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システムプロパティが設定されていないと、デフォルトの globalRMISocketFactoryは、最初の (直接) 接続試行からjava.net.SocketExceptionがスローされたときに、HTTP トンネリングへフォールバックします。これは、最初の接続試行がjava.net.UnknownHostExceptionまたはjava.net.NoRouteToHostExceptionをスローしたときのみ HTTP トンネリングへフォールバックするデフォルトの動作とは対照的です。この設定は、承認されないポートへの接続試行を無視する代わりに拒否するファイアウォールを取り扱うときに、有用である場合があります。そのときは、クライアントのデフォルトの global
RMISocketFactory内がjava.net.ConnectionExceptionになります。このシステムプロパティが有効にされていないと、UnknownHostExceptionでもNoRouteToHostExceptionでもないため、このようなConnectionExceptionが HTTP フォールバックのトリガになることはありません。 ただし、このシステムプロパティが有効にされている場合は、ConnectionExceptionがSocketExceptionのサブクラスであるため、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" ログです。
rmi-comments@java.sun.com までお送りください。
| Copyright © 2004 Sun Microsystems, Inc.All Rights Reserved. コメントの送付先: rmi-comments@java.sun.com |