package de.is24.util.monitoring.jmx; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.management.InstanceAlreadyExistsException; import javax.management.InstanceNotFoundException; import javax.management.MBeanRegistrationException; import javax.management.MBeanServer; import javax.management.MalformedObjectNameException; import javax.management.NotCompliantMBeanException; import javax.management.ObjectName; import java.lang.management.ManagementFactory; public class JMXBeanRegistrationHelper { private MBeanServer beanServer; private final String jmxPrefix; private static final Logger LOG = LoggerFactory.getLogger(JMXBeanRegistrationHelper.class); public JMXBeanRegistrationHelper(JmxAppMon4JNamingStrategy jmxAppMon4JNamingStrategy) { this.jmxPrefix = jmxAppMon4JNamingStrategy.getJmxPrefix() + ":"; beanServer = ManagementFactory.getPlatformMBeanServer(); } protected void registerMBeanOnJMX(Object object, String name, String type) throws InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException, MalformedObjectNameException { beanServer.registerMBean(object, createBeanName(name, type)); } protected void unregisterMBeanOnJMX(String name, String type) throws InstanceNotFoundException, MBeanRegistrationException, MalformedObjectNameException { ObjectName beanName = createBeanName(name, type); if (beanServer.isRegistered(beanName)) { beanServer.unregisterMBean(beanName); } } private ObjectName createBeanName(String name, String type) throws MalformedObjectNameException { StringBuilder buf = new StringBuilder(jmxPrefix); if (type != null) { buf.append("type="); buf.append(type); buf.append(","); } buf.append("name="); buf.append(name); return new ObjectName(buf.toString()); } }