Author: davsclaus
Date: Wed Apr 18 07:43:22 2012
New Revision: 1327403

URL: http://svn.apache.org/viewvc?rev=1327403&view=rev
Log:
CAMEL-5187: Improved Camel JMX working with WebSphere. Thanks to Christian Ohr 
for the patch.

Added:
    
camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java
      - copied unchanged from r1327402, 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java
Modified:
    camel/branches/camel-2.9.x/   (props changed)
    
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java

Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1327402

Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: 
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java?rev=1327403&r1=1327402&r2=1327403&view=diff
==============================================================================
--- 
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
 (original)
+++ 
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
 Wed Apr 18 07:43:22 2012
@@ -22,9 +22,9 @@ import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.rmi.RemoteException;
 import java.rmi.registry.LocateRegistry;
-import java.util.HashSet;
+import java.util.HashMap;
 import java.util.List;
-import java.util.Set;
+import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import javax.management.JMException;
 import javax.management.MBeanServer;
@@ -60,7 +60,8 @@ public class DefaultManagementAgent exte
     private CamelContext camelContext;
     private ExecutorService executorService;
     private MBeanServer server;
-    private final Set<ObjectName> mbeansRegistered = new HashSet<ObjectName>();
+    // need a name -> actual name mapping as some servers changes the names 
(suc as WebSphere)
+    private final Map<ObjectName, ObjectName> mbeansRegistered = new 
HashMap<ObjectName, ObjectName>();
     private JMXConnectorServer cs;
 
     private Integer registryPort;
@@ -240,15 +241,17 @@ public class DefaultManagementAgent exte
     }
 
     public void unregister(ObjectName name) throws JMException {
-        if (server.isRegistered(name)) {
-            server.unregisterMBean(name);
+        if (isRegistered(name)) {
+            server.unregisterMBean(mbeansRegistered.get(name));
             LOG.debug("Unregistered MBean with objectname: {}", name);
         }
         mbeansRegistered.remove(name);
     }
 
     public boolean isRegistered(ObjectName name) {
-        return server.isRegistered(name);
+        return (mbeansRegistered.containsKey(name) 
+                && server.isRegistered(mbeansRegistered.get(name))) 
+                || server.isRegistered(name);
     }
 
     protected void doStart() throws Exception {
@@ -280,11 +283,10 @@ public class DefaultManagementAgent exte
         }
 
         // Using the array to hold the busMBeans to avoid the 
CurrentModificationException
-        ObjectName[] mBeans = mbeansRegistered.toArray(new 
ObjectName[mbeansRegistered.size()]);
+        ObjectName[] mBeans = mbeansRegistered.keySet().toArray(new 
ObjectName[mbeansRegistered.size()]);
         int caught = 0;
         for (ObjectName name : mBeans) {
             try {
-                mbeansRegistered.remove(name);
                 unregister(name);
             } catch (Exception e) {
                 LOG.info("Exception unregistering MBean with name " + name, e);
@@ -302,7 +304,7 @@ public class DefaultManagementAgent exte
         throws JMException {
 
         // have we already registered the bean, there can be shared instances 
in the camel routes
-        boolean exists = server.isRegistered(name);
+        boolean exists = isRegistered(name);
         if (exists) {
             if (forceRegistration) {
                 LOG.info("ForceRegistration enabled, unregistering existing 
MBean");
@@ -324,7 +326,7 @@ public class DefaultManagementAgent exte
             ObjectName registeredName = instance.getObjectName();
             LOG.debug("Registered MBean with objectname: {}", registeredName);
 
-            mbeansRegistered.add(registeredName);
+            mbeansRegistered.put(name, registeredName);
         }
     }
 


Reply via email to