我正在尝试为JMX Connector设置请求超时但看起来它不起作用。
env.put("jmx.remote.x.request.waiting.timeout", new Long(30000));
但由于它不起作用,我用谷歌搜索原因并发现在标准的JMX远程api中不支持上述环境变量。
还有其他方法可以设置请求超时吗?
答案 0 :(得分:7)
如果使用默认的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文档中,通信的客户端和服务器端也很少有其他有用的属性。
答案 1 :(得分: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);
}