/**
* JMX连接
* @param url
* JMX连接地址
* @param jmxUser
* JMX授权用户 null为无授权用户
* @param jmxPassword
* JMX授权密码 null为无授权密码
* @param timeout
* 超时时间
* @param unit
* 超时单位
* @return
* @throws IOException
*/
public static JMXConnector connectWithTimeout( final JMXServiceURL url,String jmxUser,String jmxPassword, long timeout, TimeUnit unit) throws Exception {
final BlockingQueue<Object> blockingQueue = new ArrayBlockingQueue<>(1);
ExecuteThreadUtil.execute(() -> {
try {
JMXConnector connector;
if(jmxUser != null && jmxPassword != null){
Map<String,Object> env = new HashMap<>();
String[] credentials = new String[] { jmxUser, jmxPassword };
env.put(JMXConnector.CREDENTIALS, credentials);
connector = JMXConnectorFactory.connect(url,env);
}else{
connector = JMXConnectorFactory.connect(url,null);
}
if (!blockingQueue.offer(connector))
connector.close();
} catch (Throwable t) {
blockingQueue.offer(t);
}
});
Object result = BlockingQueueUtil.getResult(blockingQueue,timeout,unit);
blockingQueue.clear();
if (result instanceof JMXConnector){
return (JMXConnector) result;
}else if (result == null){
throw new SocketTimeoutException("Connect timed out: " + url);
}else if(result instanceof Throwable){
throw new IOException("JMX Connect Failed : " + url,((Throwable) result));
}
return null;
}
JMXConnectWithTimeout.java 文件源码
java
阅读 30
收藏 0
点赞 0
评论 0
项目:SuitAgent
作者:
评论列表
文章目录