Updated Branches: refs/heads/camel-2.10.x b368b05e5 -> 44905ef4d refs/heads/camel-2.11.x b3bc9bcc3 -> 4a4f6930b refs/heads/camel-2.12.x 2229277ad -> 337f0f0e7 refs/heads/master 9d162bbfd -> 814755e95
CAMEL-6695: ManagementAgent should use a thread safe map for housekeeping of registered mbeans. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/814755e9 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/814755e9 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/814755e9 Branch: refs/heads/master Commit: 814755e95bec6e8c0b1a85c967f6c9242dbe2aca Parents: 9d162bb Author: Claus Ibsen <davscl...@apache.org> Authored: Tue Sep 3 13:48:19 2013 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue Sep 3 13:48:19 2013 +0200 ---------------------------------------------------------------------- .../camel/management/DefaultManagementAgent.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/814755e9/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java index 381b719..99c8e20 100644 --- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java +++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java @@ -25,9 +25,9 @@ import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.rmi.server.UnicastRemoteObject; -import java.util.HashMap; import java.util.List; -import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; import javax.management.JMException; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; @@ -62,7 +62,7 @@ public class DefaultManagementAgent extends ServiceSupport implements Management private CamelContext camelContext; private MBeanServer server; // need a name -> actual name mapping as some servers changes the names (such as WebSphere) - private final Map<ObjectName, ObjectName> mbeansRegistered = new HashMap<ObjectName, ObjectName>(); + private final ConcurrentMap<ObjectName, ObjectName> mbeansRegistered = new ConcurrentHashMap<ObjectName, ObjectName>(); private JMXConnectorServer cs; private Registry registry; @@ -250,15 +250,17 @@ public class DefaultManagementAgent extends ServiceSupport implements Management public void unregister(ObjectName name) throws JMException { if (isRegistered(name)) { - server.unregisterMBean(mbeansRegistered.get(name)); + ObjectName on = mbeansRegistered.remove(name); + server.unregisterMBean(on); LOG.debug("Unregistered MBean with ObjectName: {}", name); + } else { + mbeansRegistered.remove(name); } - mbeansRegistered.remove(name); } public boolean isRegistered(ObjectName name) { - return (mbeansRegistered.containsKey(name) - && server.isRegistered(mbeansRegistered.get(name))) + ObjectName on = mbeansRegistered.get(name); + return (on != null && server.isRegistered(on)) || server.isRegistered(name); }