From: fhanik Date: Thu, 11 Dec 2008 05:17:19 +0000 (+0000) Subject: Refactor interceptor instantiation a bit X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=d22ba909868cc58d17ca48a32a4765ef136afaaa;p=tomcat7.0 Refactor interceptor instantiation a bit git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@725584 13f79535-47bb-0310-9956-ffa450edef68 --- 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 d9240a2e3..b74dfee51 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 @@ -202,11 +202,10 @@ public class ConnectionPool { PoolProperties.InterceptorDefinition[] proxies = getPoolProperties().getJdbcInterceptorsAsArray(); for (int i=proxies.length-1; i>=0; i--) { try { - JdbcInterceptor interceptor = - (JdbcInterceptor) Class.forName(proxies[i].getClassName(), true, Thread.currentThread().getContextClassLoader()).newInstance(); //should this be the class loader? + JdbcInterceptor interceptor = proxies[i].getInterceptorClass().newInstance(); interceptor.setProperties(proxies[i].getProperties()); interceptor.setNext(handler); - interceptor.reset(this, con); //initialize + interceptor.reset(this, con); handler = interceptor; }catch(Exception x) { SQLException sx = new SQLException("Unable to instantiate interceptor chain."); 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 c3953cfce..7c04f8a72 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 @@ -431,7 +431,7 @@ public class PoolProperties { public static class InterceptorDefinition { protected String className; protected List properties = new ArrayList(); - + protected volatile Class clazz = null; public InterceptorDefinition(String className) { this.className = className; } @@ -451,6 +451,13 @@ public class PoolProperties { public List getProperties() { return properties; } + + public Class getInterceptorClass() throws ClassNotFoundException { + if (clazz==null) { + clazz = Class.forName(getClassName(), true, JdbcInterceptor.class.getClassLoader()); + } + return clazz; + } } public static class InterceptorProperty {