15

JMX コネクタのリクエスト タイムアウトを設定しようとしていますが、うまくいかないようです。

env.put("jmx.remote.x.request.waiting.timeout", new Long(30000));

しかし、うまくいかなかったので、グーグルで理由を調べたところ、標準のJMXリモートAPIでは上記の環境変数がサポートされていないことがわかりました。

リクエストのタイムアウトを設定する他の方法はありますか?

4

2 に答える 2

8

デフォルトの JMX プロトコル (RMI) を使用する場合、クライアント側のタイムアウトに最適なオプションはグローバル RMI 接続タイムアウトです。もちろん、永久に開いている必要がある RMI 接続を使用する必要がない場合にのみ機能します。

タイムアウトのサンプル プロパティを次に示します (Oracle RMI ドキュメントから取得: http://docs.oracle.com/javase/7/docs/technotes/guides/rmi/sunrmiproperties.html )。

-Dsun.rmi.transport.tcp.responseTimeout=60000

私はそれをテストしました、それは本当にうまくいきます。オラクルのドキュメントには、通信のクライアント側とサーバー側に役立つプロパティが他にもいくつかあります。

于 2013-12-18T11:45:18.260 に答える
3

これらのコードを試して、JMX コネクタのタイムアウトを設定できます。

   JMXConnector connectWithTimeout(JMXServiceURL url, long timeout, TimeUnit unit) {
    ExecutorService executor = Executors.newSingleThreadExecutor();
       Future<JMXConnector> future = executor.submit(new Callable<JMXConnector>() {
            public JMXConnector call() {
                return JMXConnectorFactory.connect(url);
            }
              });
       return future.get(timeout, unit);
          }
于 2013-09-12T08:59:23.623 に答える