KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > soto > jmx > mx4j > Mx4jService


1 package org.sapia.soto.jmx.mx4j;
2
3 import mx4j.util.StandardMBeanProxy;
4
5 import org.sapia.soto.jmx.JmxService;
6 import org.sapia.soto.jmx.JmxServiceFactory;
7
8 import javax.management.DynamicMBean JavaDoc;
9 import javax.management.InstanceAlreadyExistsException JavaDoc;
10 import javax.management.InstanceNotFoundException JavaDoc;
11 import javax.management.MBeanRegistrationException JavaDoc;
12 import javax.management.MBeanServer JavaDoc;
13 import javax.management.MBeanServerFactory JavaDoc;
14 import javax.management.NotCompliantMBeanException JavaDoc;
15 import javax.management.ObjectName JavaDoc;
16 import javax.management.RuntimeMBeanException JavaDoc;
17
18 import javax.naming.Context JavaDoc;
19
20
21 /**
22  * @author Yanick Duchesne
23  *
24  * <dl>
25  * <dt><b>Copyright:</b><dd>Copyright &#169; 2002-2003 <a HREF="http://www.sapia-oss.org">Sapia Open Source Software</a>. All Rights Reserved.</dd></dt>
26  * <dt><b>License:</b><dd>Read the license.txt file of the jar or visit the
27  * <a HREF="http://www.sapia-oss.org/license.html">license page</a> at the Sapia OSS web site</dd></dt>
28  * </dl>
29  */

30 public class Mx4jService implements JmxService {
31   public static final int DEFAULT_PORT = 1099;
32   private int _registryPort = DEFAULT_PORT;
33   private String JavaDoc _registryHost;
34   private String JavaDoc _jndiName = "Mx4jService";
35   private MBeanServer JavaDoc _server;
36   private ObjectName JavaDoc _naming;
37   private JRMPAdaptorExMBean _mbean;
38
39   public void setHost(String JavaDoc host) {
40     _registryHost = host;
41   }
42
43   public void setPort(int port) {
44     _registryPort = port;
45   }
46
47   public void setJndiName(String JavaDoc name) {
48     _jndiName = name;
49   }
50
51   /**
52    * @see org.sapia.soto.jmx.JmxService#registerMBean(javax.management.DynamicMBean, javax.management.ObjectName)
53    */

54   public void registerMBean(DynamicMBean JavaDoc mbean, ObjectName JavaDoc name)
55     throws MBeanRegistrationException JavaDoc, InstanceAlreadyExistsException JavaDoc,
56       NotCompliantMBeanException JavaDoc {
57     _server.registerMBean(mbean, name);
58   }
59
60   /**
61    * @see org.sapia.soto.jmx.JmxService#unregisterMBean(javax.management.ObjectName)
62    */

63   public void unregisterMBean(ObjectName JavaDoc name)
64     throws InstanceNotFoundException JavaDoc, MBeanRegistrationException JavaDoc {
65     _server.unregisterMBean(name);
66   }
67
68   /**
69    * @see org.sapia.soto.Service#init()
70    */

71   public void init() throws Exception JavaDoc {
72     // Create a MBeanServer
73
_server = MBeanServerFactory.createMBeanServer();
74
75     // Create and start the naming service
76
_naming = new ObjectName JavaDoc("Naming:type=rmiregistry");
77
78     _server.createMBean("mx4j.tools.naming.NamingService", _naming, null);
79     _server.invoke(_naming, "start", null, null);
80
81     // Create the JRMP adaptor
82
ObjectName JavaDoc adaptor = new ObjectName JavaDoc("Adaptor:protocol=JRMP");
83
84     //_server.createMBean("mx4j.adaptor.rmi.jrmp.JRMPAdaptorEx", adaptor, null);
85
_server.createMBean(JRMPAdaptorEx.class.getName(), adaptor, null);
86
87     _mbean = (JRMPAdaptorExMBean) StandardMBeanProxy.create(JRMPAdaptorExMBean.class,
88         _server, adaptor);
89     _mbean.setMBeanServer(_server);
90
91     _mbean.setJNDIName(_jndiName);
92
93     // Optionally, you can specify the JNDI properties,
94
// instead of having in the classpath a jndi.properties file
95
_mbean.putJNDIProperty(Context.INITIAL_CONTEXT_FACTORY,
96       "com.sun.jndi.rmi.registry.RegistryContextFactory");
97
98     if (_registryHost == null) {
99       _registryHost = "localhost";
100     }
101
102     _mbean.putJNDIProperty(Context.PROVIDER_URL,
103       "rmi://" + _registryHost + ":" + _registryPort);
104     JmxServiceFactory.setDefaultInstance(this);
105   }
106
107   /**
108    *
109    * @see org.sapia.soto.Service#start()
110    */

111   public void start() throws Exception JavaDoc {
112     // Registers the JRMP adaptor in JNDI and starts it
113
try {
114       _mbean.start();
115     } catch (RuntimeMBeanException JavaDoc e) {
116       throw e.getTargetException();
117     }
118   }
119
120   /**
121    * @see org.sapia.soto.Service#dispose()
122    */

123   public void dispose() {
124     try {
125       _mbean.stop();
126
127       //Stop the naming service (RMI registry)
128
_server.invoke(_naming, "stop", null, null);
129
130       JmxServiceFactory.setDefaultInstance(null);
131     } catch (Exception JavaDoc e) {
132       //noop;
133
}
134   }
135 }
136
Popular Tags