From 3ad88f639a55256c33c6e8c7c2846a95b95b5140 Mon Sep 17 00:00:00 2001 From: wenshao Date: Tue, 16 Dec 2014 22:05:53 +0800 Subject: [PATCH] bug fixed for mbean register --- .../java/com/alibaba/druid/pool/DruidDataSource.java | 8 ++++++-- .../druid/stat/DruidDataSourceStatManager.java | 11 ++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) 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 {