KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > jmx > server > OddjobMBeanFactory


1 /*
2  * (c) Rob Gordon 2005.
3  */

4 package org.oddjob.jmx.server;
5
6 import java.text.DecimalFormat JavaDoc;
7 import java.text.NumberFormat JavaDoc;
8
9 import javax.management.JMException JavaDoc;
10 import javax.management.MBeanServer JavaDoc;
11 import javax.management.MalformedObjectNameException JavaDoc;
12 import javax.management.ObjectName JavaDoc;
13
14 import org.apache.log4j.Logger;
15
16 /**
17  * A factory for producing OddjobMBeans. The MBean names are just sequential formatted numbers.
18  * The root name is created with the 0 number.
19  *
20  */

21 public class OddjobMBeanFactory {
22     private static final Logger logger = Logger.getLogger(OddjobMBeanFactory.class);
23     
24     /** The server */
25     private final MBeanServer JavaDoc server;
26     
27     /** Give each bean a serial number. */
28     private int serial = 0;
29
30     /**
31      * Constructor.
32      *
33      * @param server The server to register newly created beans with.
34      */

35     public OddjobMBeanFactory(MBeanServer JavaDoc server) {
36         this.server = server;
37     }
38     
39     /**
40      * Create an MBean and register with the server using the generated name.
41      *
42      * @param obj The object the MBean is wrapping.
43      * @return The object name registered.
44      * @throws JMException If the MBean fails to register.
45      */

46     public ObjectName JavaDoc createMBeanFor(Object JavaDoc obj, ServerContext context)
47     throws JMException JavaDoc {
48         NumberFormat JavaDoc f = new DecimalFormat JavaDoc("00000000");
49         String JavaDoc uid = null;
50         synchronized (this) {
51             uid = f.format(serial++);
52         }
53         OddjobMBean ojmb = new OddjobMBean(obj, this, context);
54         ObjectName JavaDoc objName = new ObjectName JavaDoc("oddjob:uid=" + uid);
55         server.registerMBean(ojmb, objName);
56         logger.debug("Created and register OddjobMBean [" + objName.toString() + "]");
57         return objName;
58     }
59     
60     /**
61      * Remove a bean from the server.
62      *
63      * @param objName The bean.
64      * @throws JMException
65      */

66     public void destroy(ObjectName JavaDoc objName) throws JMException JavaDoc {
67         server.invoke(objName, "destroy", new Object JavaDoc[0], new String JavaDoc[0]);
68         server.unregisterMBean(objName);
69         logger.debug("Unregistered OddjobMBean [" + objName.toString() + "]");
70     }
71     
72     public static ObjectName JavaDoc rootName() {
73         try {
74             return new ObjectName JavaDoc("oddjob:uid=00000000");
75         }
76         catch (MalformedObjectNameException JavaDoc ex) {
77             ex.printStackTrace();
78             return null;
79         }
80     }
81 }
82
Popular Tags