Подтвердить что ты не робот

Как установить тайм-аут запроса для JMX-коннектора

Я пытаюсь установить тайм-аут запроса для JMX Connector, но похоже, что он не работает.

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

Но так как это не сработало, я googled, чтобы увидеть причину, и выяснил, что в стандартном JMX удаленном api не поддерживается вышеупомянутая переменная среды.

Есть ли другой способ установить тайм-аут запроса?

4b9b3361

Ответ 1

Если вы используете протокол JMX по умолчанию - RMI, то лучшим вариантом для тайм-аута стороны клиента является глобальный тайм-аут соединения RMI. Конечно, он будет работать только в том случае, если вам не нужно использовать соединения RMI, которые должны быть открыты навсегда.

Вот свойство образца для тайм-аутов (взято из документации Oracle RMI: http://docs.oracle.com/javase/7/docs/technotes/guides/rmi/sunrmiproperties.html):

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

Я тестировал его, он действительно работает. В документации oracle также есть несколько других полезных свойств для клиентской и серверной сторон связи.

Ответ 2

u может попробовать эти коды, чтобы установить тайм-аут разъема 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);
          }