From 76c5bcdefbb0bda790259505d5a40d661bc752ea Mon Sep 17 00:00:00 2001 From: fhanik Date: Thu, 11 Dec 2008 05:49:10 +0000 Subject: [PATCH] Implemented closure notification. Turns out generics only work on an instance level, so you cant use static methods without having to use reflection. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@725586 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/tomcat/jdbc/pool/ConnectionPool.java | 9 ++++++++- .../java/org/apache/tomcat/jdbc/pool/JdbcInterceptor.java | 10 ++++++++++ .../java/org/apache/tomcat/jdbc/pool/PoolProperties.java | 4 ++-- .../apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java | 10 ++++++++++ 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java index b74dfee51..6e41ed7cf 100644 --- a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java +++ b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java @@ -291,7 +291,14 @@ public class ConnectionPool { } size.set(0); if (this.getPoolProperties().isJmxEnabled()) stopJmx(); - + PoolProperties.InterceptorDefinition[] proxies = getPoolProperties().getJdbcInterceptorsAsArray(); + for (int i=0; iThis method is only invoked on a single instance of the interceptor, and not on every instance created. + * @param pool - the pool that is being closed. + */ + public void poolClosed(ConnectionPool pool) { + } } diff --git a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java index 7c04f8a72..d0dc7b33c 100644 --- a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java +++ b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java @@ -454,9 +454,9 @@ public class PoolProperties { public Class getInterceptorClass() throws ClassNotFoundException { if (clazz==null) { - clazz = Class.forName(getClassName(), true, JdbcInterceptor.class.getClassLoader()); + clazz = Class.forName(getClassName(), true, this.getClass().getClassLoader()); } - return clazz; + return (Class)clazz; } } diff --git a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java index 6a47ac58e..1fdd35be6 100644 --- a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java +++ b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java @@ -184,6 +184,16 @@ public class SlowQueryReport extends AbstractCreateStatementInterceptor { } } + + /** + * {@inheritDoc} + */ + @Override + public void poolClosed(ConnectionPool pool) { + perPoolStats.remove(pool.getName()); + super.poolClosed(pool); + } + public CompositeData[] getSlowQueriesCD() { return null; } -- 2.11.0