Author: fhanik Date: Wed Dec 10 21:49:10 2008 New Revision: 725586 URL: http://svn.apache.org/viewvc?rev=725586&view=rev Log: Implemented closure notification. Turns out generics only work on an instance level, so you cant use static methods without having to use reflection.
Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/JdbcInterceptor.java tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=725586&r1=725585&r2=725586&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java Wed Dec 10 21:49:10 2008 @@ -291,7 +291,14 @@ } size.set(0); if (this.getPoolProperties().isJmxEnabled()) stopJmx(); - + PoolProperties.InterceptorDefinition[] proxies = getPoolProperties().getJdbcInterceptorsAsArray(); + for (int i=0; i<proxies.length; i++) { + try { + proxies[i].getInterceptorClass().newInstance().poolClosed(this); + }catch (Exception x) { + log.debug("Unable to inform interceptor of pool closure.",x); + } + } } //closePool Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/JdbcInterceptor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/JdbcInterceptor.java?rev=725586&r1=725585&r2=725586&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/JdbcInterceptor.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/JdbcInterceptor.java Wed Dec 10 21:49:10 2008 @@ -90,4 +90,14 @@ public void setUseEquals(boolean useEquals) { this.useEquals = useEquals; } + + /** + * This method is invoked by a connection pool when the pool is closed. + * Interceptor classes can override this method if they keep static + * variables or other tracking means around. + * <b>This method is only invoked on a single instance of the interceptor, and not on every instance created.</b> + * @param pool - the pool that is being closed. + */ + public void poolClosed(ConnectionPool pool) { + } } Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java?rev=725586&r1=725585&r2=725586&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java Wed Dec 10 21:49:10 2008 @@ -454,9 +454,9 @@ public Class<? extends JdbcInterceptor> 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<? extends JdbcInterceptor>)clazz; } } Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java?rev=725586&r1=725585&r2=725586&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java Wed Dec 10 21:49:10 2008 @@ -184,6 +184,16 @@ } } + + /** + * [EMAIL PROTECTED] + */ + @Override + public void poolClosed(ConnectionPool pool) { + perPoolStats.remove(pool.getName()); + super.poolClosed(pool); + } + public CompositeData[] getSlowQueriesCD() { return null; } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]