From 3c5ebf60a0831d86383fa796f43d5a6255d65247 Mon Sep 17 00:00:00 2001 From: wenshao Date: Wed, 7 Sep 2011 15:08:10 +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@683 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../alibaba/druid/pool/DruidAbstractDataSourceMBean.java | 2 ++ .../java/com/alibaba/druid/pool/DruidDataSource.java | 9 ++++++++- .../alibaba/druid/stat/DruidDataSourceStatManager.java | 5 +++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSourceMBean.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSourceMBean.java index 9791cfd895..58edcee2f1 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSourceMBean.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSourceMBean.java @@ -79,4 +79,6 @@ public interface DruidAbstractDataSourceMBean { long getTimeBetweenConnectErrorMillis(); int getMaxOpenPreparedStatements(); + + long getRemoveAbandonedCount(); } diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 918bb0ebd6..c2dbedfb53 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -74,6 +74,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat private long recycleCount = 0L; private long createConnectionCount = 0L; private long destroyCount = 0L; + private long removeAbandonedCount = 0L; // store private ConnectionHolder[] connections; @@ -100,6 +101,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat recycleCount = 0; createConnectionCount = 0; destroyCount = 0; + removeAbandonedCount = 0; } finally { lock.unlock(); } @@ -644,6 +646,10 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat return activeCount; } + public long getRemoveAbandonedCount() { + return removeAbandonedCount; + } + public class CreateConnectionThread extends Thread { public CreateConnectionThread(String name){ @@ -702,7 +708,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat if (breakAfterAcquireFailure) { break; } - + try { Thread.sleep(timeBetweenConnectErrorMillis); } catch (InterruptedException interruptEx) { @@ -774,6 +780,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat if (timeMillis >= removeAbandonedTimeoutMillis) { PoolableConnection pooledConnection = entry.getKey(); JdbcUtils.close(pooledConnection); + removeAbandonedCount++; if (isLogAbandoned()) { StringBuilder buf = new StringBuilder(); diff --git a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java index 68199a4c16..bda3b40217 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java +++ b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java @@ -95,6 +95,7 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe map.put("ValidationQueryTimeout", dataSource.getValidationQueryTimeout()); map.put("DriverClassName", dataSource.getDriverClassName()); map.put("Username", dataSource.getUsername()); + map.put("RemoveAbandonedCount", dataSource.getRemoveAbandonedCount()); return new CompositeDataSupport(rowType, map); } @@ -113,7 +114,7 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe SimpleType.LONG, SimpleType.INTEGER, SimpleType.INTEGER, SimpleType.INTEGER, SimpleType.INTEGER, // SimpleType.INTEGER, SimpleType.INTEGER, SimpleType.INTEGER, SimpleType.BOOLEAN, SimpleType.BOOLEAN, // SimpleType.BOOLEAN, SimpleType.LONG, SimpleType.LONG, SimpleType.LONG, SimpleType.STRING, // - SimpleType.STRING, SimpleType.INTEGER, SimpleType.STRING, SimpleType.STRING, + SimpleType.STRING, SimpleType.INTEGER, SimpleType.STRING, SimpleType.STRING, SimpleType.LONG, // }; @@ -123,7 +124,7 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe "CloseCount", "ActiveCount", "PoolingCount", "LockQueueLength", "WaitThreadCount", // "InitialSize", "MaxActive", "MinIdle", "PoolPreparedStatements", "TestOnBorrow", // "TestOnReturn", "MinEvictableIdleTimeMillis", "ConnectErrorCount", "CreateTimespanMillis", "DbType", // - "ValidationQuery", "ValidationQueryTimeout", "DriverClassName", "Username" + "ValidationQuery", "ValidationQueryTimeout", "DriverClassName", "Username", "RemoveAbandonedCount" // };