package dk.thoerup.curcuitbreaker.jmx; import java.lang.management.ManagementFactory; import java.util.logging.Level; import java.util.logging.Logger; import javax.management.MBeanServer; import javax.management.ObjectName; import dk.thoerup.curcuitbreaker.*; public class JMXWrapper { static Logger logger = Logger.getLogger(JMXWrapper.class.getName()); public static void registerCircuitBreaker(CircuitBreaker cb) { Object jmxBean; String className; if (cb instanceof AccountingCircuitBreaker) { jmxBean = new JmxAccountingCircuitBreaker((AccountingCircuitBreaker)cb); className = "AccountingCircuitBreaker"; } else { jmxBean = new JmxCircuitBreaker(cb); className = "CircuitBreaker"; } String name = cb.getName(); try { ObjectName beanName = new ObjectName("dk.thoerup.circuitbreaker:type=" + className + ",name=" + name); MBeanServer server = ManagementFactory.getPlatformMBeanServer(); if (server.isRegistered(beanName)) server.unregisterMBean(beanName); server.registerMBean(jmxBean, beanName); } catch (Exception e) { logger.log(Level.SEVERE, "Mbean failure",e ); } } }