diff --git a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java index 3a8b7d6585..8f9c13315d 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java +++ b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java @@ -144,7 +144,9 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe synchronized (instances) { if (instances.size() == 0) { try { - ObjectName objectName = new ObjectName(MBEAN_NAME); + int id = System.identityHashCode(instance.getClass()); + ObjectName objectName = new ObjectName(MBEAN_NAME + ",id=" + id); + // ObjectName objectName = new ObjectName(MBEAN_NAME); if (!mbeanServer.isRegistered(objectName)) { mbeanServer.registerMBean(instance, objectName); } @@ -206,7 +208,9 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe if (instances.size() == 0) { try { - mbeanServer.unregisterMBean(new ObjectName(MBEAN_NAME)); + int id = System.identityHashCode(instance.getClass()); + ObjectName objName = new ObjectName(MBEAN_NAME + ",id=" + id); + mbeanServer.unregisterMBean(objName); } catch (Throwable ex) { LOG.error("unregister mbean error", ex); } diff --git a/src/main/java/com/alibaba/druid/stat/DruidStatService.java b/src/main/java/com/alibaba/druid/stat/DruidStatService.java index 9c571ed6a4..e9f75127bb 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidStatService.java +++ b/src/main/java/com/alibaba/druid/stat/DruidStatService.java @@ -357,8 +357,9 @@ public final class DruidStatService implements DruidStatServiceMBean { public static void registerMBean() { MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer(); try { - - ObjectName objectName = new ObjectName(MBEAN_NAME); + int id = System.identityHashCode(instance.getClass()); + ObjectName objectName = new ObjectName(MBEAN_NAME + ",id=" + id); + // ObjectName objectName = new ObjectName(MBEAN_NAME); if (!mbeanServer.isRegistered(objectName)) { mbeanServer.registerMBean(instance, objectName); } @@ -369,9 +370,10 @@ public final class DruidStatService implements DruidStatServiceMBean { public static void unregisterMBean() { MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer(); - try { - mbeanServer.unregisterMBean(new ObjectName(MBEAN_NAME)); + int id = System.identityHashCode(instance.getClass()); + ObjectName objectName = new ObjectName(MBEAN_NAME + ",id=" + id); + mbeanServer.unregisterMBean(objectName); } catch (JMException ex) { LOG.error("unregister mbean error", ex); }