[jboss-cvs] JBossAS SVN: r102593 - in projects/jboss-osgi/projects/bundles/jmx/trunk/jmx-bundle/src/main/java/org/jboss/osgi/jmx: internal and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Mar 18 17:42:46 EDT 2010


Author: thomas.diesler at jboss.com
Date: 2010-03-18 17:42:45 -0400 (Thu, 18 Mar 2010)
New Revision: 102593

Modified:
   projects/jboss-osgi/projects/bundles/jmx/trunk/jmx-bundle/src/main/java/org/jboss/osgi/jmx/JMXCapability.java
   projects/jboss-osgi/projects/bundles/jmx/trunk/jmx-bundle/src/main/java/org/jboss/osgi/jmx/internal/MBeanServerService.java
Log:
Add more logging

Modified: projects/jboss-osgi/projects/bundles/jmx/trunk/jmx-bundle/src/main/java/org/jboss/osgi/jmx/JMXCapability.java
===================================================================
--- projects/jboss-osgi/projects/bundles/jmx/trunk/jmx-bundle/src/main/java/org/jboss/osgi/jmx/JMXCapability.java	2010-03-18 21:18:15 UTC (rev 102592)
+++ projects/jboss-osgi/projects/bundles/jmx/trunk/jmx-bundle/src/main/java/org/jboss/osgi/jmx/JMXCapability.java	2010-03-18 21:42:45 UTC (rev 102593)
@@ -58,16 +58,16 @@
 {
    // Provide logging
    private static final Logger log = Logger.getLogger(JMXCapability.class);
-   
+
    public JMXCapability()
    {
       super(MBeanServer.class.getName());
-      
+
       addSystemProperty("org.jboss.osgi.jmx.host", System.getProperty("jboss.bind.address", "localhost"));
       addSystemProperty("org.jboss.osgi.jmx.rmi.port", "1198");
-      
+
       addDependency(new CompendiumCapability());
-      
+
       addBundle("bundles/jboss-osgi-jmx.jar");
       addBundle("bundles/org.apache.aries.jmx.jar");
    }
@@ -75,6 +75,10 @@
    @Override
    public void start(OSGiRuntime runtime) throws BundleException
    {
+      // Explicitly create the MBeanServer, so we don't get into
+      // a race condition with jboss-osgi-jmx also creating one
+      runtime.getMBeanServer();
+
       super.start(runtime);
       assertMBeanRegistration(runtime, true);
    }
@@ -88,32 +92,44 @@
 
    private void assertMBeanRegistration(OSGiRuntime runtime, boolean state)
    {
+      log.debug("assertMBeanRegistration: " + state);
+
       MBeanServer server = (MBeanServer)runtime.getMBeanServer();
       ObjectName fwkName = ObjectNameFactory.create(FrameworkMBean.OBJECTNAME);
       ObjectName bndName = ObjectNameFactory.create(BundleStateMBean.OBJECTNAME);
       ObjectName srvName = ObjectNameFactory.create(ServiceStateMBean.OBJECTNAME);
-      
+
       int timeout = 5000;
-      while ( 0 < (timeout -= 200))
+      while (0 < (timeout -= 200))
       {
-         if (server.isRegistered(fwkName) != state || server.isRegistered(bndName) != state || server.isRegistered(srvName) != state)
+         boolean fwkCheck = checkMBean(server, fwkName, state);
+         boolean bndCheck = checkMBean(server, bndName, state);
+         boolean srvCheck = checkMBean(server, srvName, state);
+         if (fwkCheck == true && bndCheck == true && srvCheck == true)
+            break;
+         
+         try
          {
-            try
-            {
-               Thread.sleep(200);
-            }
-            catch (InterruptedException e)
-            {
-               // ignore
-            }
+            Thread.sleep(200);
          }
+         catch (InterruptedException e)
+         {
+            // ignore
+         }
       }
-      
-      if (server.isRegistered(fwkName) != state)
+
+      if (checkMBean(server, fwkName, state) == false)
          log.warn("FrameworkMBean " + (state ? "not" : "still") + " registered");
-      if (server.isRegistered(bndName) != state)
+      if (checkMBean(server, bndName, state) == false)
          log.warn("BundleStateMBean " + (state ? "not" : "still") + " registered");
-      if (server.isRegistered(srvName) != state)
+      if (checkMBean(server, srvName, state) == false)
          log.warn("ServiceStateMBean " + (state ? "not" : "still") + " registered");
    }
+
+   protected boolean checkMBean(MBeanServer server, ObjectName oname, boolean state)
+   {
+      boolean registered = server.isRegistered(oname);
+      log.debug(oname + " registered: " + registered);
+      return registered == state;
+   }
 }
\ No newline at end of file

Modified: projects/jboss-osgi/projects/bundles/jmx/trunk/jmx-bundle/src/main/java/org/jboss/osgi/jmx/internal/MBeanServerService.java
===================================================================
--- projects/jboss-osgi/projects/bundles/jmx/trunk/jmx-bundle/src/main/java/org/jboss/osgi/jmx/internal/MBeanServerService.java	2010-03-18 21:18:15 UTC (rev 102592)
+++ projects/jboss-osgi/projects/bundles/jmx/trunk/jmx-bundle/src/main/java/org/jboss/osgi/jmx/internal/MBeanServerService.java	2010-03-18 21:42:45 UTC (rev 102593)
@@ -23,6 +23,7 @@
 
 //$Id$
 
+
 import java.util.ArrayList;
 
 import javax.management.MBeanServer;
@@ -52,37 +53,46 @@
 
    public MBeanServer registerMBeanServer()
    {
-      MBeanServer mbeanServer = null;
-
       // Check if there is an MBeanServer service already
       ServiceReference sref = context.getServiceReference(MBeanServer.class.getName());
       if (sref != null)
       {
-         mbeanServer = (MBeanServer)context.getService(sref);
+         MBeanServer mbeanServer = (MBeanServer)context.getService(sref);
          log.debug("Found MBeanServer fom service: " + mbeanServer.getDefaultDomain());
          return mbeanServer;
       }
 
+      // Get or create th MBeanServer
+      MBeanServer mbeanServer = getMBeanServer();
+
+      // Register the MBeanServer 
+      context.registerService(MBeanServer.class.getName(), mbeanServer, null);
+      log.debug("MBeanServer registered");
+
+      return mbeanServer;
+   }
+
+   private MBeanServer getMBeanServer()
+   {
+      MBeanServer mbeanServer = null;
+      
       ArrayList<MBeanServer> serverArr = MBeanServerFactory.findMBeanServer(null);
       if (serverArr.size() > 1)
          log.warn("Multiple MBeanServer instances: " + serverArr);
-
+   
       if (serverArr.size() > 0)
       {
          mbeanServer = serverArr.get(0);
-         log.debug("Found MBeanServer: " + mbeanServer.getDefaultDomain());
+         log.debug("Found MBeanServer: " + mbeanServer);
       }
-
+   
       if (mbeanServer == null)
       {
          log.debug("No MBeanServer, create one ...");
          mbeanServer = MBeanServerFactory.createMBeanServer();
+         log.debug("Created MBeanServer: " + mbeanServer);
       }
-
-      // Register the MBeanServer 
-      context.registerService(MBeanServer.class.getName(), mbeanServer, null);
-      log.debug("MBeanServer registered");
-
+      
       return mbeanServer;
    }
 }
\ No newline at end of file




More information about the jboss-cvs-commits mailing list