diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java index 099578c72f..10cd9cdea3 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java @@ -170,6 +170,26 @@ public abstract class DruidAbstractDataSource implements DruidAbstractDataSource protected boolean breakAfterAcquireFailure = false; + protected final AtomicLong commitCount = new AtomicLong(); + protected final AtomicLong rollbackCount = new AtomicLong(); + + + public long getCommitCount() { + return commitCount.get(); + } + + public void incrementCommitCount() { + commitCount.incrementAndGet(); + } + + public long getRollbackCount() { + return rollbackCount.get(); + } + + public void incrementRollbackCount() { + rollbackCount.incrementAndGet(); + } + public boolean isBreakAfterAcquireFailure() { return breakAfterAcquireFailure; } @@ -209,12 +229,12 @@ public abstract class DruidAbstractDataSource implements DruidAbstractDataSource public void setValidConnectionChecker(ValidConnectionChecker validConnectionChecker) { this.validConnectionChecker = validConnectionChecker; } - + public String getValidConnectionCheckerClassName() { if (validConnectionChecker == null) { return null; } - + return validConnectionChecker.getClass().getName(); } diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSourceMBean.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSourceMBean.java index 8c8a928271..0497477d4d 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSourceMBean.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSourceMBean.java @@ -34,6 +34,10 @@ public interface DruidAbstractDataSourceMBean { long getDestroyCount(); long getCreateTimespanMillis(); + + long getCommitCount(); + + long getRollbackCount(); int getQueryTimeout(); diff --git a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java index 23ca3ea676..d6c3ecdd05 100644 --- a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java +++ b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java @@ -545,6 +545,7 @@ public class PoolableConnection implements PooledConnection, Connection { public void commit() throws SQLException { checkOpen(); + holder.getDataSource().incrementCommitCount(); try { conn.commit(); } catch (SQLException ex) { @@ -556,6 +557,7 @@ public class PoolableConnection implements PooledConnection, Connection { public void rollback() throws SQLException { checkOpen(); + holder.getDataSource().incrementRollbackCount(); try { conn.rollback(); } catch (SQLException ex) {