KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > tomcat > servlets > jmxremote > JmxRemoteServlet


1 /*
2
3  * Created on Jul 14, 2004
4
5  *
6
7  * TODO To change the template for this generated file go to
8
9  * Window - Preferences - Java - Code Style - Code Templates
10
11  */

12
13 package org.apache.tomcat.servlets.jmxremote;
14
15
16
17 import java.io.IOException JavaDoc;
18
19 import java.rmi.registry.LocateRegistry JavaDoc;
20
21 import java.rmi.registry.Registry JavaDoc;
22
23
24
25 import javax.management.MBeanServer JavaDoc;
26
27 import javax.management.MBeanServerFactory JavaDoc;
28
29 import javax.management.remote.JMXConnectorServer JavaDoc;
30
31 import javax.management.remote.JMXConnectorServerFactory JavaDoc;
32
33 import javax.management.remote.JMXServiceURL JavaDoc;
34
35 import javax.servlet.ServletConfig JavaDoc;
36
37 import javax.servlet.ServletException JavaDoc;
38
39 import javax.servlet.http.HttpServlet JavaDoc;
40
41 import javax.servlet.http.HttpServletRequest JavaDoc;
42
43 import javax.servlet.http.HttpServletResponse JavaDoc;
44
45
46
47 // Using o.a.tomcat.servlets because o.a.catalina won't be loaded unless trusted app
48

49
50
51 /**
52
53  * Experimental servlet allowing connectors to be deployed and managed using the
54
55  * webapp infrastructure.
56
57  *
58
59  * Connectors can be packaged in a WAR file, deployed and managed using the
60
61  * normal tools. Configuration is done using web.xml init-params - while this is
62
63  * not as simple as <connector> tags in server.xml, it may be easier to support
64
65  * in tools and explain to webapp developers.
66
67  *
68
69  * Since webapp class loader is used - start/stop as well as reloading can be
70
71  * controlled from the /manager.
72
73  *
74
75  * Issues:
76
77  * - may polute the webapps namespace - solution would be to reserve a prefix
78
79  * or use some invalid/special name.
80
81  *
82
83  * @author Costin Manolache
84
85  */

86
87 public class JmxRemoteServlet extends HttpServlet JavaDoc {
88
89     JMXConnectorServer JavaDoc cntorServer = null;
90
91     
92
93     public void init(ServletConfig JavaDoc conf) throws ServletException JavaDoc {
94
95         // otherwise log doesn't work
96

97         super.init(conf);
98
99         
100
101         MBeanServer JavaDoc mBeanServer = null;
102
103
104
105         Registry JavaDoc reg=null;
106
107         
108
109         // TODO: use config to get the registry port, url, pass, user
110

111
112
113         
114
115         try {
116
117             if( reg==null )
118
119                 reg=LocateRegistry.createRegistry(1099);
120
121         } catch( Throwable JavaDoc t ) {
122
123             log("Can't start registry - it may be already started: " + t);
124
125         }
126
127         
128
129         try {
130
131             mBeanServer = null;
132
133             if (MBeanServerFactory.findMBeanServer(null).size() > 0) {
134
135                 mBeanServer =
136
137                     (MBeanServer JavaDoc) MBeanServerFactory.findMBeanServer(null).get(0);
138
139             } else {
140
141                 mBeanServer = MBeanServerFactory.createMBeanServer();
142
143             }
144
145         } catch( Throwable JavaDoc t ) {
146
147             log("Can't get the mbean server " + t);
148
149             return;
150
151         }
152
153         
154
155         try {
156
157             JMXServiceURL JavaDoc address = new JMXServiceURL JavaDoc("service:jmx:rmi://rmiHost/jndi/rmi://localhost:1099/jndiPath");
158
159             cntorServer =
160
161                 JMXConnectorServerFactory.newJMXConnectorServer(address, null, mBeanServer);
162
163             cntorServer.start();
164
165         } catch (Throwable JavaDoc e) {
166
167             log("Can't register jmx connector ", e);
168
169         }
170
171     }
172
173
174
175     /** Stop the connector
176
177      *
178
179      */

180
181     public void destroy() {
182
183         try {
184
185             if( cntorServer != null ) cntorServer.stop();
186
187         } catch (Exception JavaDoc e) {
188
189             e.printStackTrace();
190
191         }
192
193     }
194
195
196
197     public void service(HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc resp)
198
199         throws ServletException JavaDoc, IOException JavaDoc
200
201     {
202
203         resp.sendError(404);
204
205     }
206
207
208
209     // I don't know why super.log is broken in init
210

211 // public void log(String s) {
212

213 // System.err.println("JMX rem:" + s);
214

215 // }
216

217
218
219 }
220
221
Popular Tags