JMXUtil.java
package emissary.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.management.ManagementFactory;
import javax.annotation.Nullable;
import javax.management.MBeanServer;
import javax.management.ObjectName;
/**
* Utility class for JMX operations.
*/
public class JMXUtil {
private static final Logger logger = LoggerFactory.getLogger(JMXUtil.class);
/**
* Simple method (hopefully) to register an object with the JMXServer.
*
* @param obj object to register
*/
public static void registerMBean(final Object obj) {
registerMBean(obj, obj.getClass().getName());
}
public static void registerMBean(@Nullable final Object obj, final String name) {
if (Boolean.parseBoolean(System.getProperty("emissary.jmx.disabled"))) {
logger.info("Emissary JMX is disabled via emissary.jmx.disabled property");
return;
}
if (obj != null) {
logger.debug("Regisering MBean for Class --> {}", obj.getClass().getName());
final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
try {
final ObjectName objName = new ObjectName("emissary:name=" + name);
if (!mbs.isRegistered(objName)) {
mbs.registerMBean(obj, objName);
}
} catch (Exception e) {
logger.error("Caught exception trying to register MBean for class {}", obj.getClass().getName(), e);
}
} else {
logger.warn("Received request to register a null object");
}
}
/** This class is not meant to be instantiated. */
private JMXUtil() {}
}