You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2011/03/14 17:31:12 UTC

svn commit: r1081451 - in /cxf/branches/2.3.x-fixes: ./ rt/management/src/main/java/org/apache/cxf/management/jmx/ rt/management/src/test/java/org/apache/cxf/management/jmx/ rt/management/src/test/resources/

Author: dkulp
Date: Mon Mar 14 16:31:12 2011
New Revision: 1081451

URL: http://svn.apache.org/viewvc?rev=1081451&view=rev
Log:
Merged revisions 1081445 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1081445 | dkulp | 2011-03-14 12:24:44 -0400 (Mon, 14 Mar 2011) | 5 lines
  
  [CXF-3396] Make sure the standalone MBeanServer lookups are done
  properly to prevent multiple MBeanServers from being created when they
  shouldn't be.
  
  Patch from Aki Yoshida applied.
........

Added:
    cxf/branches/2.3.x-fixes/rt/management/src/test/java/org/apache/cxf/management/jmx/BusRegistrationTest.java
      - copied unchanged from r1081445, cxf/trunk/rt/management/src/test/java/org/apache/cxf/management/jmx/BusRegistrationTest.java
    cxf/branches/2.3.x-fixes/rt/management/src/test/resources/no-connector-spring.xml
      - copied unchanged from r1081445, cxf/trunk/rt/management/src/test/resources/no-connector-spring.xml
Modified:
    cxf/branches/2.3.x-fixes/   (props changed)
    cxf/branches/2.3.x-fixes/rt/management/src/main/java/org/apache/cxf/management/jmx/InstrumentationManagerImpl.java

Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.3.x-fixes/rt/management/src/main/java/org/apache/cxf/management/jmx/InstrumentationManagerImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/management/src/main/java/org/apache/cxf/management/jmx/InstrumentationManagerImpl.java?rev=1081451&r1=1081450&r2=1081451&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/management/src/main/java/org/apache/cxf/management/jmx/InstrumentationManagerImpl.java (original)
+++ cxf/branches/2.3.x-fixes/rt/management/src/main/java/org/apache/cxf/management/jmx/InstrumentationManagerImpl.java Mon Mar 14 16:31:12 2011
@@ -21,8 +21,10 @@ package org.apache.cxf.management.jmx;
 
 import java.io.IOException;
 import java.lang.management.ManagementFactory;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -32,6 +34,7 @@ import javax.annotation.Resource;
 import javax.management.InstanceAlreadyExistsException;
 import javax.management.JMException;
 import javax.management.MBeanServer;
+import javax.management.MBeanServerDelegate;
 import javax.management.MBeanServerFactory;
 
 import javax.management.NotCompliantMBeanException;
@@ -60,6 +63,8 @@ public class InstrumentationManagerImpl 
     implements InstrumentationManager, BusLifeCycleListener {
     private static final Logger LOG = LogUtils.getL7dLogger(InstrumentationManagerImpl.class);
 
+    private static Map<String, String>mbeanServerIDMap = new HashMap<String, String>();
+
     private Bus bus;
     private MBServerConnectorFactory mcf;    
     private MBeanServer mbs;
@@ -119,10 +124,20 @@ public class InstrumentationManagerImpl 
                 if (usePlatformMBeanServer) {
                     mbs = ManagementFactory.getPlatformMBeanServer();
                 } else {
-                    List<MBeanServer> servers = CastUtils
-                        .cast(MBeanServerFactory.findMBeanServer(mbeanServerName));
-                    if (servers.size() <= 1) {
+                    String mbeanServerID = mbeanServerIDMap.get(mbeanServerName);
+                    List<MBeanServer> servers = null;
+                    if (mbeanServerID != null) {
+                        servers = CastUtils.cast(MBeanServerFactory.findMBeanServer(mbeanServerID));
+                    }
+                    if (servers == null || servers.size() == 0) {
                         mbs = MBeanServerFactory.createMBeanServer(mbeanServerName);
+                        try {
+                            mbeanServerID = (String) mbs.getAttribute(MBeanServerDelegate.DELEGATE_NAME,
+                                                                     "MBeanServerId");
+                            mbeanServerIDMap.put(mbeanServerName, mbeanServerID);
+                        } catch (JMException e) {
+                            // ignore
+                        }
                     } else {
                         mbs = (MBeanServer)servers.get(0);
                     }