From 9cd1805c00f34db7564d83f0130e1eb6b3a84deb Mon Sep 17 00:00:00 2001 From: songqingqing Date: Tue, 2 Apr 2019 19:13:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96Mbean=E7=9A=84registerMBean&u?= =?UTF-8?q?nregisterMBean=E6=96=B9=E6=B3=95=E7=9A=84=E5=86=B2=E7=AA=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/druid/stat/DruidDataSourceStatManager.java | 8 ++++++-- .../java/com/alibaba/druid/stat/DruidStatService.java | 10 ++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) 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); }