From ff4600a1059013bc6ffd214cde6e1ac78d37547a Mon Sep 17 00:00:00 2001 From: wenshao Date: Thu, 8 Sep 2011 08:12:13 +0000 Subject: [PATCH] =?UTF-8?q?JMX=E5=A2=9E=E5=BC=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@696 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../stat/DruidDataSourceStatManager.java | 27 ++++++++++++------- .../stat/DruidDataSourceStatManagerMBean.java | 2 ++ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java index 043c4ca965..09d719d3cd 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java +++ b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java @@ -4,6 +4,7 @@ import java.lang.management.ManagementFactory; import java.util.HashMap; import java.util.Map; import java.util.Set; +import java.util.concurrent.atomic.AtomicLong; import javax.management.JMException; import javax.management.MBeanServer; @@ -24,14 +25,16 @@ import com.alibaba.druid.util.ConcurrentIdentityHashMap; public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBean { - private final static Log LOG = LogFactory.getLog(DruidDataSourceStatManager.class); + private final static Log LOG = LogFactory.getLog(DruidDataSourceStatManager.class); - private final static DruidDataSourceStatManager instance = new DruidDataSourceStatManager(); + private final static DruidDataSourceStatManager instance = new DruidDataSourceStatManager(); + + private final AtomicLong resetCount = new AtomicLong(); // global instances - private static final ConcurrentIdentityHashMap instances = new ConcurrentIdentityHashMap(); + private static final ConcurrentIdentityHashMap dataSources = new ConcurrentIdentityHashMap(); - private final static String MBEAN_NAME = "com.alibaba.druid:type=DruidDataSourceStat"; + private final static String MBEAN_NAME = "com.alibaba.druid:type=DruidDataSourceStat"; public static DruidDataSourceStatManager getInstance() { return instance; @@ -39,7 +42,7 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe public synchronized static void add(DruidDataSource dataSource) { MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer(); - if (instances.size() == 0) { + if (dataSources.size() == 0) { try { mbeanServer.registerMBean(instance, new ObjectName(MBEAN_NAME)); } catch (JMException ex) { @@ -69,11 +72,11 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe } } - instances.put(dataSource, objectName); + dataSources.put(dataSource, objectName); } public synchronized static void remove(DruidDataSource dataSource) { - ObjectName objectName = instances.remove(dataSource); + ObjectName objectName = dataSources.remove(dataSource); MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer(); @@ -85,7 +88,7 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe } } - if (instances.size() == 0) { + if (dataSources.size() == 0) { try { mbeanServer.unregisterMBean(new ObjectName(MBEAN_NAME)); } catch (JMException ex) { @@ -95,7 +98,7 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe } public static Set getDruidDataSourceInstances() { - return instances.keySet(); + return dataSources.keySet(); } public void reset() { @@ -103,6 +106,12 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe for (DruidDataSource dataSource : dataSources) { dataSource.resetStat(); } + + resetCount.incrementAndGet(); + } + + public long getResetCount() { + return resetCount.get(); } public TabularData getDataSourceList() throws JMException { diff --git a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManagerMBean.java b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManagerMBean.java index c5244310a4..b43762c005 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManagerMBean.java +++ b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManagerMBean.java @@ -8,4 +8,6 @@ public interface DruidDataSourceStatManagerMBean { void reset(); TabularData getDataSourceList() throws JMException; + + long getResetCount(); }