KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > outerj > daisy > jmx > MBeanServerImpl


1 /*
2  * Copyright 2004 Outerthought bvba and Schaubroeck nv
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.outerj.daisy.jmx;
17
18 import java.io.ObjectInputStream JavaDoc;
19 import java.util.Set JavaDoc;
20 import java.util.List JavaDoc;
21
22 import javax.management.Attribute JavaDoc;
23 import javax.management.AttributeList JavaDoc;
24 import javax.management.AttributeNotFoundException JavaDoc;
25 import javax.management.InstanceAlreadyExistsException JavaDoc;
26 import javax.management.InstanceNotFoundException JavaDoc;
27 import javax.management.IntrospectionException JavaDoc;
28 import javax.management.InvalidAttributeValueException JavaDoc;
29 import javax.management.ListenerNotFoundException JavaDoc;
30 import javax.management.MBeanException JavaDoc;
31 import javax.management.MBeanInfo JavaDoc;
32 import javax.management.MBeanRegistrationException JavaDoc;
33 import javax.management.MBeanServer JavaDoc;
34 import javax.management.MBeanServerFactory JavaDoc;
35 import javax.management.NotCompliantMBeanException JavaDoc;
36 import javax.management.NotificationFilter JavaDoc;
37 import javax.management.NotificationListener JavaDoc;
38 import javax.management.ObjectInstance JavaDoc;
39 import javax.management.ObjectName JavaDoc;
40 import javax.management.OperationsException JavaDoc;
41 import javax.management.QueryExp JavaDoc;
42 import javax.management.ReflectionException JavaDoc;
43 import javax.management.loading.ClassLoaderRepository JavaDoc;
44
45 import mx4j.log.Log;
46 import mx4j.log.Logger;
47 import mx4j.tools.adaptor.http.HttpAdaptor;
48 import mx4j.tools.adaptor.http.XSLTProcessor;
49
50 import org.apache.avalon.framework.activity.Initializable;
51 import org.apache.avalon.framework.activity.Startable;
52 import org.apache.avalon.framework.configuration.Configurable;
53 import org.apache.avalon.framework.configuration.Configuration;
54 import org.apache.avalon.framework.configuration.ConfigurationException;
55 import org.apache.avalon.framework.logger.AbstractLogEnabled;
56
57 /**
58  * @avalon.component version="1.0" name="mbeanserver" lifestyle="singleton"
59  * @avalon.service type="javax.management.MBeanServer"
60  */

61 public class MBeanServerImpl extends AbstractLogEnabled implements MBeanServer JavaDoc, Initializable, Configurable, Startable {
62     private MBeanServer JavaDoc delegate;
63
64     private int httpAdaptorPort;
65     private String JavaDoc httpAdaptorHost;
66     private String JavaDoc httpAdaptorAuthMethod;
67     private String JavaDoc httpAdaptorUser;
68     private String JavaDoc httpAdaptorPassword;
69
70     private int xmlHttpAdaptorPort;
71     private String JavaDoc xmlHttpAdaptorHost;
72     private String JavaDoc xmlHttpAdaptorAuthMethod;
73     private String JavaDoc xmlHttpAdaptorUser;
74     private String JavaDoc xmlHttpAdaptorPassword;
75
76     private HttpAdaptor httpAdaptor;
77     private HttpAdaptor xmlHttpAdaptor;
78
79     public void configure(Configuration configuration) throws ConfigurationException {
80         Configuration httpAdaptorConf = configuration.getChild("httpAdaptor");
81         httpAdaptorPort = httpAdaptorConf.getAttributeAsInteger("port");
82         httpAdaptorHost = httpAdaptorConf.getAttribute("host", "localhost");
83         httpAdaptorAuthMethod = httpAdaptorConf.getAttribute("authenticationMethod", "none");
84         httpAdaptorUser = httpAdaptorConf.getAttribute("username", null);
85         httpAdaptorPassword = httpAdaptorConf.getAttribute("password", null);
86
87         Configuration xmlHttpAdaptorConf = configuration.getChild("xmlHttpAdaptor");
88         xmlHttpAdaptorPort = xmlHttpAdaptorConf.getAttributeAsInteger("port");
89         xmlHttpAdaptorHost = xmlHttpAdaptorConf.getAttribute("host", "localhost");
90         xmlHttpAdaptorAuthMethod = xmlHttpAdaptorConf.getAttribute("authenticationMethod", "none");
91         xmlHttpAdaptorUser = xmlHttpAdaptorConf.getAttribute("username", null);
92         xmlHttpAdaptorPassword = xmlHttpAdaptorConf.getAttribute("password", null);
93     }
94
95     public void initialize() throws Exception JavaDoc {
96         // this is oh so ugly
97
MyLogger.avalonLogger = getLogger();
98         Log.redirectTo(new MyLogger());
99
100         // Try to reuse an existing MBeanServer if available.
101
List JavaDoc list = MBeanServerFactory.findMBeanServer(null);
102         if (list != null && list.size() > 0) {
103             delegate = (MBeanServer JavaDoc)list.get(0);
104         } else {
105             delegate = MBeanServerFactory.createMBeanServer("daisy");
106         }
107
108         {
109             httpAdaptor = new HttpAdaptor();
110             ObjectName JavaDoc httpAdaptorName = new ObjectName JavaDoc("Server:name=HttpAdaptor");
111             registerMBean(httpAdaptor, httpAdaptorName);
112             configureHttpAdaptor(httpAdaptor, httpAdaptorPort, httpAdaptorHost, httpAdaptorAuthMethod,
113                     httpAdaptorUser, httpAdaptorPassword);
114         }
115
116         {
117             xmlHttpAdaptor = new HttpAdaptor();
118             ObjectName JavaDoc xmlHttpAdaptorName = new ObjectName JavaDoc("Server:name=XmlHttpAdaptor");
119             registerMBean(xmlHttpAdaptor, xmlHttpAdaptorName);
120             configureHttpAdaptor(xmlHttpAdaptor, xmlHttpAdaptorPort, xmlHttpAdaptorHost, xmlHttpAdaptorAuthMethod,
121                     xmlHttpAdaptorUser, xmlHttpAdaptorPassword);
122         }
123
124         ObjectName JavaDoc xsltProcessorName = new ObjectName JavaDoc("Server:name=XSLTProcessor");
125         XSLTProcessor xsltProcessor = new XSLTProcessor();
126         registerMBean(xsltProcessor, xsltProcessorName);
127         httpAdaptor.setProcessorName(xsltProcessorName);
128     }
129
130     private void configureHttpAdaptor(HttpAdaptor httpAdaptor, int port, String JavaDoc host, String JavaDoc authMethod, String JavaDoc user, String JavaDoc password) {
131         httpAdaptor.setPort(port);
132         httpAdaptor.setHost(host);
133         httpAdaptor.setAuthenticationMethod(authMethod);
134         if (user != null) {
135             httpAdaptor.addAuthorization(user, password);
136         }
137     }
138
139     public void start() throws Exception JavaDoc {
140         httpAdaptor.start();
141         xmlHttpAdaptor.start();
142     }
143
144     public void stop() throws Exception JavaDoc {
145         httpAdaptor.stop();
146         xmlHttpAdaptor.stop();
147     }
148
149     public static class MyLogger extends Logger {
150         // *shrug*
151
public static org.apache.avalon.framework.logger.Logger avalonLogger;
152
153         protected void log(int priority, Object JavaDoc message, Throwable JavaDoc throwable) {
154             switch (priority) {
155                 case FATAL:
156                     if (throwable == null)
157                         avalonLogger.fatalError(message.toString());
158                     else
159                         avalonLogger.fatalError(message.toString(), throwable);
160                     break;
161                 case ERROR:
162                     if (throwable == null)
163                         avalonLogger.error(message.toString());
164                     else
165                         avalonLogger.error(message.toString(), throwable);
166                     break;
167                 case WARN:
168                     if (throwable == null)
169                         avalonLogger.warn(message.toString());
170                     else
171                         avalonLogger.warn(message.toString(), throwable);
172                     break;
173                 case INFO:
174                     if (avalonLogger.isInfoEnabled()) {
175                         if (throwable == null)
176                             avalonLogger.info(message.toString());
177                         else
178                             avalonLogger.info(message.toString(), throwable);
179                     }
180                     break;
181                 case DEBUG:
182                 case TRACE:
183                     if (avalonLogger.isDebugEnabled()) {
184                         if (throwable == null)
185                             avalonLogger.debug(message.toString());
186                         else
187                             avalonLogger.debug(message.toString(), throwable);
188                     }
189                     break;
190             }
191         }
192
193         public int getPriority() {
194             if (avalonLogger.isFatalErrorEnabled()) {
195                 return FATAL;
196             } else if (avalonLogger.isErrorEnabled()) {
197                 return ERROR;
198             } else if (avalonLogger.isWarnEnabled()) {
199                 return WARN;
200             } else if (avalonLogger.isInfoEnabled()) {
201                 return INFO;
202             } else {
203                 return DEBUG;
204             }
205         }
206     }
207
208     public void addNotificationListener(ObjectName JavaDoc objectName, NotificationListener JavaDoc notificationListener, NotificationFilter JavaDoc notificationFilter, Object JavaDoc o) throws InstanceNotFoundException JavaDoc {
209         delegate.addNotificationListener(objectName, notificationListener, notificationFilter, o);
210     }
211
212     public void addNotificationListener(ObjectName JavaDoc objectName, ObjectName JavaDoc objectName1, NotificationFilter JavaDoc notificationFilter, Object JavaDoc o) throws InstanceNotFoundException JavaDoc {
213         delegate.addNotificationListener(objectName, objectName1, notificationFilter, o);
214     }
215
216     public void removeNotificationListener(ObjectName JavaDoc objectName, ObjectName JavaDoc objectName1) throws InstanceNotFoundException JavaDoc, ListenerNotFoundException JavaDoc {
217         delegate.removeNotificationListener(objectName, objectName1);
218     }
219
220     public void removeNotificationListener(ObjectName JavaDoc objectName, NotificationListener JavaDoc notificationListener) throws InstanceNotFoundException JavaDoc, ListenerNotFoundException JavaDoc {
221         delegate.removeNotificationListener(objectName, notificationListener);
222     }
223
224     public void removeNotificationListener(ObjectName JavaDoc objectName, ObjectName JavaDoc objectName1, NotificationFilter JavaDoc notificationFilter, Object JavaDoc o) throws InstanceNotFoundException JavaDoc, ListenerNotFoundException JavaDoc {
225         delegate.removeNotificationListener(objectName, objectName1, notificationFilter, o);
226     }
227
228     public void removeNotificationListener(ObjectName JavaDoc objectName, NotificationListener JavaDoc notificationListener, NotificationFilter JavaDoc notificationFilter, Object JavaDoc o) throws InstanceNotFoundException JavaDoc, ListenerNotFoundException JavaDoc {
229         delegate.removeNotificationListener(objectName, notificationListener, notificationFilter, o);
230     }
231
232     public MBeanInfo JavaDoc getMBeanInfo(ObjectName JavaDoc objectName) throws InstanceNotFoundException JavaDoc, IntrospectionException JavaDoc, ReflectionException JavaDoc {
233         return delegate.getMBeanInfo(objectName);
234     }
235
236     public boolean isInstanceOf(ObjectName JavaDoc objectName, String JavaDoc s) throws InstanceNotFoundException JavaDoc {
237         return delegate.isInstanceOf(objectName, s);
238     }
239
240     public String JavaDoc[] getDomains() {
241         return delegate.getDomains();
242     }
243
244     public String JavaDoc getDefaultDomain() {
245         return delegate.getDefaultDomain();
246     }
247
248     public ObjectInstance JavaDoc createMBean(String JavaDoc s, ObjectName JavaDoc objectName) throws ReflectionException JavaDoc, InstanceAlreadyExistsException JavaDoc, MBeanRegistrationException JavaDoc, MBeanException JavaDoc, NotCompliantMBeanException JavaDoc {
249         return delegate.createMBean(s, objectName);
250     }
251
252     public ObjectInstance JavaDoc createMBean(String JavaDoc s, ObjectName JavaDoc objectName, ObjectName JavaDoc objectName1) throws ReflectionException JavaDoc, InstanceAlreadyExistsException JavaDoc, MBeanRegistrationException JavaDoc, MBeanException JavaDoc, NotCompliantMBeanException JavaDoc, InstanceNotFoundException JavaDoc {
253         return delegate.createMBean(s, objectName, objectName1);
254     }
255
256     public ObjectInstance JavaDoc createMBean(String JavaDoc s, ObjectName JavaDoc objectName, Object JavaDoc[] objects, String JavaDoc[] strings) throws ReflectionException JavaDoc, InstanceAlreadyExistsException JavaDoc, MBeanRegistrationException JavaDoc, MBeanException JavaDoc, NotCompliantMBeanException JavaDoc {
257         return delegate.createMBean(s, objectName, objects, strings);
258     }
259
260     public ObjectInstance JavaDoc createMBean(String JavaDoc s, ObjectName JavaDoc objectName, ObjectName JavaDoc objectName1, Object JavaDoc[] objects, String JavaDoc[] strings) throws ReflectionException JavaDoc, InstanceAlreadyExistsException JavaDoc, MBeanRegistrationException JavaDoc, MBeanException JavaDoc, NotCompliantMBeanException JavaDoc, InstanceNotFoundException JavaDoc {
261         return delegate.createMBean(s, objectName, objectName1, objects, strings);
262     }
263
264     public void unregisterMBean(ObjectName JavaDoc objectName) throws InstanceNotFoundException JavaDoc, MBeanRegistrationException JavaDoc {
265         delegate.unregisterMBean(objectName);
266     }
267
268     public Object JavaDoc getAttribute(ObjectName JavaDoc objectName, String JavaDoc s) throws MBeanException JavaDoc, AttributeNotFoundException JavaDoc, InstanceNotFoundException JavaDoc, ReflectionException JavaDoc {
269         return delegate.getAttribute(objectName, s);
270     }
271
272     public void setAttribute(ObjectName JavaDoc objectName, Attribute JavaDoc attribute) throws InstanceNotFoundException JavaDoc, AttributeNotFoundException JavaDoc, InvalidAttributeValueException JavaDoc, MBeanException JavaDoc, ReflectionException JavaDoc {
273         delegate.setAttribute(objectName, attribute);
274     }
275
276     public AttributeList JavaDoc getAttributes(ObjectName JavaDoc objectName, String JavaDoc[] strings) throws InstanceNotFoundException JavaDoc, ReflectionException JavaDoc {
277         return delegate.getAttributes(objectName, strings);
278     }
279
280     public AttributeList JavaDoc setAttributes(ObjectName JavaDoc objectName, AttributeList JavaDoc attributeList) throws InstanceNotFoundException JavaDoc, ReflectionException JavaDoc {
281         return delegate.setAttributes(objectName, attributeList);
282     }
283
284     public Object JavaDoc invoke(ObjectName JavaDoc objectName, String JavaDoc s, Object JavaDoc[] objects, String JavaDoc[] strings) throws InstanceNotFoundException JavaDoc, MBeanException JavaDoc, ReflectionException JavaDoc {
285         return delegate.invoke(objectName, s, objects, strings);
286     }
287
288     public Integer JavaDoc getMBeanCount() {
289         return delegate.getMBeanCount();
290     }
291
292     public boolean isRegistered(ObjectName JavaDoc objectName) {
293         return delegate.isRegistered(objectName);
294     }
295
296     public ObjectInstance JavaDoc getObjectInstance(ObjectName JavaDoc objectName) throws InstanceNotFoundException JavaDoc {
297         return delegate.getObjectInstance(objectName);
298     }
299
300     public Set JavaDoc queryMBeans(ObjectName JavaDoc objectName, QueryExp JavaDoc queryExp) {
301         return delegate.queryMBeans(objectName, queryExp);
302     }
303
304     public Set JavaDoc queryNames(ObjectName JavaDoc objectName, QueryExp JavaDoc queryExp) {
305         return delegate.queryNames(objectName, queryExp);
306     }
307
308     public Object JavaDoc instantiate(String JavaDoc s) throws ReflectionException JavaDoc, MBeanException JavaDoc {
309         return delegate.instantiate(s);
310     }
311
312     public Object JavaDoc instantiate(String JavaDoc s, ObjectName JavaDoc objectName) throws ReflectionException JavaDoc, MBeanException JavaDoc, InstanceNotFoundException JavaDoc {
313         return delegate.instantiate(s, objectName);
314     }
315
316     public Object JavaDoc instantiate(String JavaDoc s, Object JavaDoc[] objects, String JavaDoc[] strings) throws ReflectionException JavaDoc, MBeanException JavaDoc {
317         return delegate.instantiate(s, objects, strings);
318     }
319
320     public Object JavaDoc instantiate(String JavaDoc s, ObjectName JavaDoc objectName, Object JavaDoc[] objects, String JavaDoc[] strings) throws ReflectionException JavaDoc, MBeanException JavaDoc, InstanceNotFoundException JavaDoc {
321         return delegate.instantiate(s, objectName, objects, strings);
322     }
323
324     public ObjectInstance JavaDoc registerMBean(Object JavaDoc o, ObjectName JavaDoc objectName) throws InstanceAlreadyExistsException JavaDoc, MBeanRegistrationException JavaDoc, NotCompliantMBeanException JavaDoc {
325         return delegate.registerMBean(o, objectName);
326     }
327
328     public ObjectInputStream JavaDoc deserialize(String JavaDoc s, ObjectName JavaDoc objectName, byte[] bytes) throws InstanceNotFoundException JavaDoc, OperationsException JavaDoc, ReflectionException JavaDoc {
329         return delegate.deserialize(s, objectName, bytes);
330     }
331
332     public ObjectInputStream JavaDoc deserialize(String JavaDoc s, byte[] bytes) throws OperationsException JavaDoc, ReflectionException JavaDoc {
333         return delegate.deserialize(s, bytes);
334     }
335
336     public ObjectInputStream JavaDoc deserialize(ObjectName JavaDoc objectName, byte[] bytes) throws InstanceNotFoundException JavaDoc, OperationsException JavaDoc {
337         return delegate.deserialize(objectName, bytes);
338     }
339
340     public ClassLoader JavaDoc getClassLoaderFor(ObjectName JavaDoc objectName) throws InstanceNotFoundException JavaDoc {
341         return delegate.getClassLoaderFor(objectName);
342     }
343
344     public ClassLoader JavaDoc getClassLoader(ObjectName JavaDoc objectName) throws InstanceNotFoundException JavaDoc {
345         return delegate.getClassLoader(objectName);
346     }
347
348     public ClassLoaderRepository JavaDoc getClassLoaderRepository() {
349         return delegate.getClassLoaderRepository();
350     }
351
352 }
353
Popular Tags