[jboss-cvs] JBossAS SVN: r66966 - trunk/embedded/src/main/java/org/jboss/embedded/adapters.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Nov 12 12:02:37 EST 2007


Author: alesj
Date: 2007-11-12 12:02:37 -0500 (Mon, 12 Nov 2007)
New Revision: 66966

Modified:
   trunk/embedded/src/main/java/org/jboss/embedded/adapters/JMXKernel.java
Log:
MBeanServer bootstrap change.

Modified: trunk/embedded/src/main/java/org/jboss/embedded/adapters/JMXKernel.java
===================================================================
--- trunk/embedded/src/main/java/org/jboss/embedded/adapters/JMXKernel.java	2007-11-12 15:12:01 UTC (rev 66965)
+++ trunk/embedded/src/main/java/org/jboss/embedded/adapters/JMXKernel.java	2007-11-12 17:02:37 UTC (rev 66966)
@@ -21,14 +21,13 @@
 */
 package org.jboss.embedded.adapters;
 
+import java.lang.reflect.Method;
 import java.util.Date;
 import java.util.Properties;
-import javax.management.JMRuntimeException;
 import javax.management.ListenerNotFoundException;
 import javax.management.MBeanNotificationInfo;
 import javax.management.MBeanServer;
-import javax.management.MBeanServerBuilder;
-import javax.management.MBeanServerDelegate;
+import javax.management.MBeanServerFactory;
 import javax.management.Notification;
 import javax.management.NotificationBroadcasterSupport;
 import javax.management.NotificationEmitter;
@@ -37,6 +36,7 @@
 import javax.management.ObjectName;
 
 import org.jboss.kernel.Kernel;
+import org.jboss.mx.server.ServerConstants;
 import org.jboss.mx.util.JMXExceptionDecoder;
 import org.jboss.mx.util.MBeanServerLocator;
 import org.jboss.system.ServiceController;
@@ -45,7 +45,7 @@
 import org.jboss.system.server.ServerConfigImpl;
 import org.jboss.system.server.ServerConfigImplMBean;
 import org.jboss.system.server.ServerImplMBean;
-import org.jboss.system.server.jmx.MBeanServerBuilderImpl;
+import org.jboss.system.server.jmx.LazyMBeanServer;
 import org.jboss.util.JBossObject;
 
 /**
@@ -63,7 +63,6 @@
     * The JMX MBeanServer which will serve as our communication bus.
     */
    private MBeanServer mbeanServer;
-   private MBeanServerBuilder builder = new MBeanServerBuilderImpl();
    private ServiceController controller;
    private Kernel kernel;
    private ServerConfig serverConfig;
@@ -85,11 +84,6 @@
       this.kernel = kernel;
    }
 
-   public void setBuilder(MBeanServerBuilder builder)
-   {
-      this.builder = builder;
-   }
-
    public ServerConfig getServerConfig()
    {
       return serverConfig;
@@ -103,29 +97,42 @@
    /**
     * We don't want to override platforms default mechanism for creating MBeanServer so lets just do it ourselves
     *
-    * @param domain
+    * @param domain the domain
     * @return the mbeanserver
+    * @throws Exception for any error
     */
-   private MBeanServer createMBeanServer(String domain)
+   private MBeanServer createMBeanServer(String domain) throws Exception
    {
-      final MBeanServerDelegate delegate =
-              builder.newMBeanServerDelegate();
-      if (delegate == null)
+      MBeanServer server;
+
+      String builder = System.getProperty(ServerConstants.MBEAN_SERVER_BUILDER_CLASS_PROPERTY, ServerConstants.DEFAULT_MBEAN_SERVER_BUILDER_CLASS);
+      System.setProperty(ServerConstants.MBEAN_SERVER_BUILDER_CLASS_PROPERTY, builder);
+
+      // Check if we'll use the platform MBeanServer or instantiate our own
+      if (serverConfig.getPlatformMBeanServer() == true)
       {
-         final String msg =
-                 "MBeanServerBuilder.newMBeanServerDelegate() " +
-                         "returned null";
-         throw new JMRuntimeException(msg);
+         // jdk1.5+
+         ClassLoader cl = Thread.currentThread().getContextClassLoader();
+         Class clazz = cl.loadClass("java.lang.management.ManagementFactory");
+         Class[] sig = null;
+         Method method = clazz.getMethod("getPlatformMBeanServer", sig);
+         Object[] args = null;
+         server = (MBeanServer) method.invoke(null, args);
+         // Tell the MBeanServerLocator to point to this mbeanServer
+         MBeanServerLocator.setJBoss(server);
+         /* If the LazyMBeanServer was used, we need to reset to the jboss
+         MBeanServer to use our implementation for the jboss services.
+         */
+         server = LazyMBeanServer.resetToJBossServer(server);
       }
-      final MBeanServer mbeanServer =
-              builder.newMBeanServer(domain, null, delegate);
-      if (mbeanServer == null)
+      else
       {
-         final String msg =
-                 "MBeanServerBuilder.newMBeanServer() returned null";
-         throw new JMRuntimeException(msg);
+         // Create our own MBeanServer
+         server = MBeanServerFactory.createMBeanServer(domain);
       }
-      return mbeanServer;
+      log.debug("Created MBeanServer: " + server);
+
+      return server;
    }
 
    public static void setupUrlHandlers()




More information about the jboss-cvs-commits mailing list