1 4 package org.oddjob.jmx.server; 5 6 import java.text.DecimalFormat ; 7 import java.text.NumberFormat ; 8 9 import javax.management.JMException ; 10 import javax.management.MBeanServer ; 11 import javax.management.MalformedObjectNameException ; 12 import javax.management.ObjectName ; 13 14 import org.apache.log4j.Logger; 15 16 21 public class OddjobMBeanFactory { 22 private static final Logger logger = Logger.getLogger(OddjobMBeanFactory.class); 23 24 25 private final MBeanServer server; 26 27 28 private int serial = 0; 29 30 35 public OddjobMBeanFactory(MBeanServer server) { 36 this.server = server; 37 } 38 39 46 public ObjectName createMBeanFor(Object obj, ServerContext context) 47 throws JMException { 48 NumberFormat f = new DecimalFormat ("00000000"); 49 String uid = null; 50 synchronized (this) { 51 uid = f.format(serial++); 52 } 53 OddjobMBean ojmb = new OddjobMBean(obj, this, context); 54 ObjectName objName = new ObjectName ("oddjob:uid=" + uid); 55 server.registerMBean(ojmb, objName); 56 logger.debug("Created and register OddjobMBean [" + objName.toString() + "]"); 57 return objName; 58 } 59 60 66 public void destroy(ObjectName objName) throws JMException { 67 server.invoke(objName, "destroy", new Object [0], new String [0]); 68 server.unregisterMBean(objName); 69 logger.debug("Unregistered OddjobMBean [" + objName.toString() + "]"); 70 } 71 72 public static ObjectName rootName() { 73 try { 74 return new ObjectName ("oddjob:uid=00000000"); 75 } 76 catch (MalformedObjectNameException ex) { 77 ex.printStackTrace(); 78 return null; 79 } 80 } 81 } 82 | Popular Tags |