diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 5339155afa..8a73839301 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -1394,12 +1394,10 @@ public class DruidDataSource extends DruidAbstractDataSource public Object run() { ObjectName objectName = DruidDataSourceStatManager.addDataSource(DruidDataSource.this, DruidDataSource.this.name); - - if (objectName != null) { - DruidDataSource.this.setObjectName(objectName); - DruidDataSource.this.mbeanRegistered = true; - } - + + DruidDataSource.this.setObjectName(objectName); + DruidDataSource.this.mbeanRegistered = true; + return null; } }); diff --git a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java index 5a95616c59..e7c5ede9d2 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java +++ b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java @@ -127,22 +127,13 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe } public synchronized static ObjectName addDataSource(Object dataSource, String name) { - if (dataSource == null || name == null) { - return null; - } - final IdentityHashMap instances = getInstances(); - + synchronized (instances) { MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer(); - - if (mbeanServer == null) { - return null; - } - + if (instances.size() == 0) { try { - ObjectName objectName = new ObjectName(MBEAN_NAME); if (!mbeanServer.isRegistered(objectName)) { mbeanServer.registerMBean(instance, objectName); @@ -150,7 +141,7 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe } catch (JMException ex) { LOG.error("register mbean error", ex); } - + DruidStatService.registerMBean(); }