KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > caucho > jmx > EnvironmentMBeanServerBuilder


1 /*
2  * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved
3  *
4  * This file is part of Resin(R) Open Source
5  *
6  * Each copy or derived work must preserve the copyright notice and this
7  * notice unmodified.
8  *
9  * Resin Open Source is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * Resin Open Source is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
17  * of NON-INFRINGEMENT. See the GNU General Public License for more
18  * details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with Resin Open Source; if not, write to the
22  * Free SoftwareFoundation, Inc.
23  * 59 Temple Place, Suite 330
24  * Boston, MA 02111-1307 USA
25  *
26  * @author Scott Ferguson
27  */

28
29 package com.caucho.jmx;
30
31 import com.caucho.log.Log;
32
33 import javax.management.MBeanServer JavaDoc;
34 import javax.management.MBeanServerDelegate JavaDoc;
35 import java.lang.reflect.Method JavaDoc;
36 import java.util.logging.Level JavaDoc;
37 import java.util.logging.Logger JavaDoc;
38
39 /**
40  * Resin implementation for an MBeanServer factory.
41  */

42 public class EnvironmentMBeanServerBuilder { // extends MBeanServerBuilder {
43
private static final Logger JavaDoc log = Log.open(EnvironmentMBeanServerBuilder.class);
44
45   private static MBeanServer JavaDoc _globalServer;
46
47   private MBeanServer JavaDoc _mbeanServer;
48   private boolean _isInit;
49   
50   public EnvironmentMBeanServerBuilder()
51   {
52   }
53   
54   /**
55    * Creates the delegate.
56    */

57   public MBeanServerDelegate JavaDoc newMBeanServerDelegate()
58   {
59     return new MBeanServerDelegateImpl("Resin-JMX");
60   }
61   
62   /**
63    * Creates the mbean server
64    */

65   public MBeanServer JavaDoc newMBeanServer(String JavaDoc defaultDomain,
66                     MBeanServer JavaDoc outer,
67                     MBeanServerDelegate JavaDoc delegate)
68   {
69     if (! _isInit) {
70       _isInit = true;
71
72       try {
73     Class JavaDoc cl = Class.forName("java.lang.management.ManagementFactory");
74
75     Method JavaDoc method = cl.getMethod("getPlatformMBeanServer", new Class JavaDoc[0]);
76
77     _mbeanServer = (MBeanServer JavaDoc) method.invoke(null, new Object JavaDoc[0]);
78
79     return _mbeanServer;
80       } catch (ClassNotFoundException JavaDoc e) {
81       } catch (Throwable JavaDoc e) {
82     log.log(Level.WARNING, e.toString(), e);
83       }
84     }
85
86     if (_mbeanServer == null) {
87       if (defaultDomain == null)
88     defaultDomain = "resin";
89     
90       //_mbeanServer = new EnvironmentMBeanServer(defaultDomain);
91
}
92
93     return _mbeanServer;
94   }
95   
96   /**
97    * Creates the mbean server
98    */

99   public static MBeanServer JavaDoc getGlobal(String JavaDoc defaultDomain)
100   {
101     if (_globalServer == null) {
102       if (defaultDomain == null)
103     defaultDomain = "resin";
104
105       MBeanServerDelegateImpl delegate;
106       delegate = new MBeanServerDelegateImpl("Resin-JMX");
107       _globalServer = new EnvironmentMBeanServer(defaultDomain, delegate);
108     }
109
110     return _globalServer;
111   }
112 }
113
Popular Tags