src/org/objectweb/cjdbc/controller/jmx/MBeanServerManager.java

説明を見る。
00001 00025 package org.objectweb.cjdbc.controller.jmx; 00026 00027 import java.util.Iterator; 00028 import java.util.List; 00029 00030 import javax.management.MBeanServer; 00031 import javax.management.MBeanServerFactory; 00032 import javax.management.ObjectInstance; 00033 import javax.management.ObjectName; 00034 00035 import org.objectweb.cjdbc.common.i18n.Translate; 00036 import org.objectweb.cjdbc.common.jmx.JmxException; 00037 import org.objectweb.cjdbc.common.log.Trace; 00038 00049 public class MBeanServerManager 00050 { 00051 00052 static Trace logger = Trace 00053 .getLogger("org.objectweb.cjdbc.controller.jmx.MBeanServer"); 00054 00055 private static MBeanServer mbs; 00056 private static boolean isJmxEnabled = true; 00057 00064 public static synchronized MBeanServer getInstance() 00065 { 00066 00067 if (!isJmxEnabled) 00068 { 00069 return null; 00070 } 00071 00072 if (mbs != null) 00073 { 00074 return mbs; 00075 } 00076 00077 String defaultServerBuilder = System 00078 .getProperty("javax.management.builder.initial"); 00079 00080 if (!MBeanServerBuilder.class.getName().equals(defaultServerBuilder)) 00081 { 00082 if (defaultServerBuilder != null) 00083 logger.error("property javax.management.builder.initial was " 00084 + defaultServerBuilder); 00085 00086 logger.debug("setting property javax.management.builder.initial"); 00087 System 00088 .setProperty("javax.management.builder.initial", 00089 org.objectweb.cjdbc.controller.jmx.MBeanServerBuilder.class 00090 .getName()); 00091 00092 } 00093 00094 mbs = MBeanServerFactory.createMBeanServer(); 00095 return mbs; 00096 } 00097 00103 public static boolean isJmxEnabled() 00104 { 00105 return isJmxEnabled; 00106 } 00107 00114 public static void setJmxEnabled(boolean isJmxEnabled) throws JmxException 00115 { 00116 if (MBeanServerManager.isJmxEnabled != isJmxEnabled && !isJmxEnabled) 00117 { 00118 // stop rmi connectors 00119 List list = RmiConnector.getRmiConnectors(); 00120 for (Iterator it = list.iterator(); it.hasNext();) 00121 { 00122 RmiConnector rmi = (RmiConnector) it.next(); 00123 rmi.stop(); 00124 } 00125 00126 // stop http adaptors 00127 list = HttpAdaptor.getHttpAdaptors(); 00128 for (Iterator it = list.iterator(); it.hasNext();) 00129 { 00130 HttpAdaptor http = (HttpAdaptor) it.next(); 00131 http.stop(); 00132 } 00133 // Stop mbean server 00134 MBeanServerFactory.releaseMBeanServer(mbs); 00135 mbs = null; 00136 } 00137 // set jmx enabled to its value 00138 MBeanServerManager.isJmxEnabled = isJmxEnabled; 00139 } 00140 00163 public static ObjectInstance registerMBean(Object object, ObjectName name) 00164 throws JmxException 00165 { 00166 MBeanServer server = getInstance(); 00167 try 00168 { 00169 00170 if (server != null) 00171 { 00172 logger.debug(Translate.get("jmx.register.mbean", new String[]{ 00173 object.getClass().toString(), name.getCanonicalName()})); 00174 00175 ObjectInstance objInstance = null; 00176 if (!server.isRegistered(name)) 00177 { 00178 objInstance = server.registerMBean(object, name); 00179 } 00180 else 00181 { 00182 logger.error(Translate.get("jmx.register.mbean.already.exist", 00183 new String[]{name.getCanonicalName()})); 00184 objInstance = server.getObjectInstance(name); 00185 } 00186 00187 logger.debug(Translate.get("jmx.server.mbean.count", "" 00188 + server.getMBeanCount())); 00189 return objInstance; 00190 } 00191 return null; 00192 } 00193 catch (Exception e) 00194 { 00195 logger.error(Translate.get("jmx.register.mbean.failed", 00196 new String[]{object.getClass().toString(), e.getMessage(), 00197 e.getClass().toString()})); 00198 e.printStackTrace(); 00199 e.getCause().printStackTrace(); 00200 throw new JmxException(e); 00201 } 00202 } 00203 00210 public static void unregister(ObjectName name) throws JmxException 00211 { 00212 MBeanServer server = getInstance(); 00213 if (server != null) 00214 { 00215 try 00216 { 00217 // unregister the MBean 00218 server.unregisterMBean(name); 00219 logger.debug(Translate.get("jmx.server.mbean.count", "" 00220 + server.getMBeanCount())); 00221 00222 } 00223 catch (Exception e) 00224 { 00225 logger.error(Translate.get("jmx.register.mbean.failed", new String[]{ 00226 name.getCanonicalName(), e.getMessage()})); 00227 throw new JmxException(e); 00228 } 00229 } 00230 } 00231 00232 }

CJDBCversion1.0.4に対してTue Oct 12 15:16:01 2004に生成されました。 doxygen 1.3.8