
com.cucumber.utils.clients.jmx.JmxClient Maven / Gradle / Ivy
package com.cucumber.utils.clients.jmx;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class JmxClient {
private Logger log = LogManager.getLogger();
private String url;
private String role;
private String pwd;
private JMXConnector jmxConnector;
private MBeanServerConnection mbsConnection;
public JmxClient(String url) {
this(url, null, null);
}
public JmxClient(String url, String role, String pwd) {
this.url = url;
this.role = role;
this.pwd = pwd;
try {
if (role != null && pwd != null) {
Map env = new HashMap<>();
env.put(JMXConnector.CREDENTIALS, new String[]{role, pwd});
this.jmxConnector = JMXConnectorFactory.connect(new JMXServiceURL(url), env);
} else {
this.jmxConnector = JMXConnectorFactory.connect(new JMXServiceURL(url));
}
this.mbsConnection = jmxConnector.getMBeanServerConnection();
log.info("Initialised JMX Connection to {}", url);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public T getMBeanProxy(String objectName, Class clazz) {
try {
return MBeanServerInvocationHandler
.newProxyInstance(mbsConnection, new ObjectName(objectName), clazz, true);
} catch (MalformedObjectNameException e) {
throw new RuntimeException(e);
}
}
public void close() {
try {
this.jmxConnector.close();
} catch (IOException e) {
log.error(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy