diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 68b6f7e9ea..5339155afa 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -1394,8 +1394,12 @@ public class DruidDataSource extends DruidAbstractDataSource public Object run() { ObjectName objectName = DruidDataSourceStatManager.addDataSource(DruidDataSource.this, DruidDataSource.this.name); - DruidDataSource.this.setObjectName(objectName); - DruidDataSource.this.mbeanRegistered = true; + + if (objectName != null) { + 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 99bd023a96..5a95616c59 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java +++ b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java @@ -127,10 +127,19 @@ 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 {