sun.rmi Properties



警告: ここで説明するプロパティは、サポート対象外であり、随時変更される可能性があります。また、Java 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
このプロパティの値は、起動グループ用に仮想マシンを起動するためにActivationGroupDesc内の情報を使用できるかどうかを判断するときに、rmidが使用するポリシーを決定します。このプロパティに指定できる値は、defaultnone、またはActivationGroupDesc情報を検証するために呼び出されるcheckExecCommandメソッドを実装するクラスの、完全指定名です。詳細は、rmidのツール・ドキュメント(Solaris、LinuxまたはMac OS X用Windows用)を参照してください。
sun.rmi.activation.execTimeout
このプロパティの値は、生成された起動グループが起動するまでの起動システムの待機時間を(ミリ秒で)表します。このプロパティを設定することにより、起動グループが起動するまでrmidが待機する最大時間を短くしたり、長くしたりできます。デフォルト値は30000ミリ秒(30秒)です。
sun.rmi.activation.groupThrottle
このプロパティの値は、rmidにより「生成されたがアクティブではない」状態を許可される起動グループVMの最大数を表します。より多くのVMを起動する必要がある場合、VMは、生成中の1つが成功するか、タイムアウトになるまで待機します。このプロパティは、アクティブなVMの最大数を制限しません。これは、オペレーティング・システムの制限に達しないように、活動の急激な増加を避けることを目的としています。このプロパティの値を低く設定するとrmidの起動時間が長くなり、高く設定すると起動時間が短くなります。ただし、設定値が高すぎると、システム・リソースが不足するために、rmidがクラッシュする可能性があります。デフォルト値は3です。以前のリリースでこのプロパティに付けられた名前のsun.rmi.rmid.maxstartgroupは、現在サポートされません。
sun.rmi.activation.groupTimeout
このプロパティの値は、rmidが起動グループのプロセスを破壊したのち、新しい起動グループを生成する前に待機する時間(ミリ秒)を表します。デフォルト値は60000ミリ秒(60秒)です。
sun.rmi.activation.snapshotInterval
このプロパティは、起動システムが、その状態のスナップショットをディスク上のrmidログ・ファイルに直列化するまでの待機時間中の更新回数を制御します。「更新」とは、最後のスナップショット作成時以降の、起動システムの状態(Activatableオブジェクトの登録など)の持続的な変化を指します。rmidの再起動をより迅速に行う場合(ログのスナップショット作成頻度を上げることにより)、またはrmidの動作効率を向上させる(ログのスナップショット作成頻度を下げることにより)場合に、このプロパティ値を変更します。このプロパティの値は、正の整数です。デフォルト値は200です。
sun.rmi.log.debug
この値がtrueの場合、rmidのロギング動作はSystem.errに送信されます。
sun.rmi.server.activation.debugExec
この値がtrueの場合、起動システムは、起動グループの生成に使用されるコマンド行にデバッグ情報を出力します。デフォルト値はfalseです。このため、デバッグ情報は出力されません。

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

sun.rmi.dgc.ackTimeout
このプロパティの値は、リモート参照が完全に受け取られて処理されたという確認通知をクライアントから受け取るまでに、サーバー側Java RMIランタイムが、リモート・メソッドの呼出しの結果として現在の仮想サーバーから返されたリモート・オブジェクト(またはリモート・オブジェクトへの参照)への強い参照を行う時間(ミリ秒単位)を表します。このタイム・アウトは、失敗状態(クライアントが確認通知を送信できない状態)にのみ適用されます。この値を小さく設定しすぎると、リモート・オブジェクトへの既知の参照がリモート・メソッドの呼出しの結果として送信中の参照だけである場合、リモート・オブジェクトのガベージ・コレクトが早く行われてしまうというリスクが高くなる場合があります。最大値はLong.MAX_VALUEです。デフォルト値は300000ミリ秒(5分)です。
sun.rmi.dgc.checkInterval
このプロパティの値は、Java RMIランタイムが期限切れのDGCリースをチェックする間隔を(ミリ秒で)表します。デフォルト値は、java.rmi.dgc.leaseValueプロパティの値の半分です。
sun.rmi.dgc.logLevel
このプロパティは、DGCリースの許可、更新、終了期限に関連した、着信呼び出しと送信呼出しのロギングを制御します。出力の送信先は、"dgc"ログです。
sun.rmi.dgc.server.gcInterval
アクセス不可能なリモート・オブジェクトを適切なタイミングで確実にアンエクスポートまたはガベージ・コレクトする必要がある場合、このプロパティの値は、Java RMIランタイムが許可するローカル・ヒープのガベージ・コレクトの最大間隔を(ミリ秒で)表します。デフォルト値は3600000ミリ秒(1時間)です。
sun.rmi.loader.logLevel
引数または戻り値の非整列化の結果として、Java RMIランタイムがクラスのロードを試みる場合にはいつでも、このプロパティは、各クラス名およびコード・ベースのロギングを制御します。このプロパティは、出力を"loader"ログに送信します。

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

sun.rmi.server.suppressStackTraces
この値をtrueに設定すると、サーバー側Java RMIランタイム実装は、リモート呼出しの結果として現在の仮想マシンからスローされるすべての例外のスタック・トレースをクリアします。このプロパティは、特定のサーバー・アプリケーションで、パフォーマンスや機密性の理由により、着信リモート呼出しの結果として整列化される例外がサーバー側スタック・トレースに含まれないようにする必要がある場合に役に立ちます。
sun.rmi.transport.logLevel
このプロパティは、トランスポート層全体の詳細なロギングを制御します。出力の送信先は、"transport"ログです。
sun.rmi.transport.tcp.localHostNameTimeOut
このプロパティの値は、Java RMIランタイムがローカル・ホストの完全指定ドメイン名を取得するための待機時間を(ミリ秒で)表します。デフォルト値は10000ミリ秒(10秒)です。
sun.rmi.transport.tcp.logLevel
このプロパティは、TCP固有のトランスポート・サブレイヤの詳細なロギングを提供します。出力の送信先は、"tcp"ログです。

sun.rmi.transport.tcp.readTimeout
このプロパティの値は、Java RMIランタイムが使用する、着信TCP接続のアイドル・タイムアウト時間を(ミリ秒で)表します。値は、java.net.Socket.setSoTimeoutに渡されます。クライアントが、本来の動作と異なり、不使用の接続を削除しない場合にのみ使用されます(sun.rmi.transport.connectionTimeoutを参照)。デフォルト値は2*3600*1000ミリ秒(2時間)です。
sun.rmi.transport.tcp.maxConnectionThreads
このプロパティの値は、着信接続の処理に使用するスレッドのプールの最大サイズを制御します。これにより、同時に実行できる着信リモート・メソッド呼出しの数の上限が決まります。このプロパティの値を小さくすると、負荷の高い環境でJava RMIサーバー・アプリケーションのスループットが向上する可能性がありますが、値が小さすぎると(アプリケーションのリモート呼出しパターンの性質に応じて)デッドロックや欠乏状態が発生する可能性があります。デフォルト値は、最大値(Integer.MAX_VALUE)で、実質的に制限はありません。
sun.rmi.transport.tcp.threadKeepAliveTime
このプロパティの値は、着信接続を処理するために使用されるスレッドのプール内にあるスレッドが終了前にアイドル状態のままである時間を制御します。デフォルト値は60000ミリ秒(1分)です。

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

sun.rmi.client.logCalls
プロパティの値がtrueの場合、sun.rmi.client.callロガーはレベルLevel.FINERに設定されます。リモート呼出しは、レベルLevel.FINERでログ記録され、リモート呼び出しからスローされた例外はレベルLevel.FINEでログ記録されます。
sun.rmi.dgc.cleanInterval
このプロパティの値は、失敗したDGC "clean"呼出しを再度実行するまでのJava RMIランタイムの待機時間の最大値を(ミリ秒で)表します。デフォルト値は180000ミリ秒(3分)です。
sun.rmi.dgc.client.gcInterval
アクセス不可能なリモート参照に対するDGC clean呼出しを適切なタイミングで確実に送信する必要がある場合、このプロパティの値は、Java RMIランタイムが許可するローカル・ヒープのガベージ・コレクトの最大間隔を(ミリ秒で)表します。デフォルト値は3600000ミリ秒(1時間)です。
sun.rmi.loader.logLevel
引数または戻り値の非整列化の結果として、Java RMIランタイムがクラスのロードを試みる場合にはいつでも、このプロパティは、各クラス名およびコード・ベースのロギングを制御します。このプロパティは、出力を"loader"ログに送信します。
sun.rmi.server.logLevel
このプロパティは、送信呼出しに関連するロギング(接続の再利用情報を含む)を制御します。出力の送信先は、"transport"ログです。

sun.rmi.transport.connectionTimeout
このプロパティの値は、Java RMIランタイムがソケット接続の開放を許可する(閉じる)前に、ソケット接続が「不使用」状態になる期間を(ミリ秒で)表します。デフォルト値は15000ミリ秒(15秒)です。sun.rmi.transport.tcp.readTimeoutも参照してください。
sun.rmi.transport.logLevel
このプロパティは、トランスポート層全体の詳細なロギングを制御します。出力の送信先は、"transport"ログです。
sun.rmi.transport.proxy.connectTimeout
このプロパティの値は、接続の試み(createSocket)が完了するまで、HTTPを使ってサーバーへの接続を試みる前の、Java RMIランタイムの待機時間の最大値を(ミリ秒で)表します。このプロパティが使用されるのは、http.proxyHostプロパティが設定され、かつjava.rmi.server.disableHttpの値がfalseの場合だけです。デフォルト値は15000ミリ秒(15秒)です。

sun.rmi.transport.proxy.eagerHttpFallback
この値が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
このプロパティは、デフォルトのRMISocketFactoryクラスが使用される場合に、イベント(createSocketおよびcreateServerSocket)のロギングを制御します。これは、HTTPを介してJava RMIを使用するアプリケーションで有用なロギング・タイプです。このプロパティでは、カスタム・ソケット・ファクトリ内のイベントはログに記録されません。"proxy"ログに送信されるメッセージもあれば、"transport"ログに送信されるメッセージもあります。
sun.rmi.transport.tcp.handshakeTimeout
このプロパティの値は、クライアント側Java RMIランタイムが、新しいJRMP接続の確立時に最初のハンドシェーク・データ(プロトコルの確認)を読み取るときに、ソケットの読取りタイム・アウトとして使用する時間(ミリ秒単位)を表します。このプロパティは、リモート・ホストのポートで待機するエンティティが実際にはJava RMIサーバーではないため、またはそのサーバーが何らかの理由で正しく機能していないために、リモート・サーバーが受け入れたTCP接続が実際には使用できないと決定するまでJava RMIランタイムが待つ時間を構成するために使用されます。最大値はInteger.MAX_VALUEで、ゼロの値はタイム・アウトの制限がないことを示します。デフォルト値は60000 (1分)です。
sun.rmi.transport.tcp.responseTimeout
このプロパティの値は、クライアント側Java RMIランタイムが、リモート・メソッド呼出しの応答データを読み取るときに、JRMP接続の確立時にソケットの読取りタイムアウトとして使用する時間(ミリ秒単位)を表します。そのため、このプロパティを使用して、リモート呼出しの結果を待機するときのタイムアウトを設定できます。このタイムアウトの期限が切れると、関連する呼出しが失敗し、java.rmi.RemoteExceptionがスローされます。ただしこのプロパティにより、成功した発信リモート呼出しで許可される時間の上限が実質的に設定されるため、このプロパティを設定するときは期限を考慮する必要があります。最大値はInteger.MAX_VALUEで、ゼロの値はタイム・アウトの制限がないことを示します。デフォルト値は0 (タイムアウトなし)です。
sun.rmi.transport.tcp.logLevel
このプロパティは、TCP固有のトランスポート・サブレイヤの詳細なロギングを提供します。出力の送信先は、"tcp"ログです。

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