Author: fhanik Date: Fri Jan 2 17:25:56 2009 New Revision: 730884 URL: http://svn.apache.org/viewvc?rev=730884&view=rev Log: Handle invocation target exceptions and throw the original exception when it happens
Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/AbstractQueryReport.java Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java?rev=730884&r1=730883&r2=730884&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java Fri Jan 2 17:25:56 2009 @@ -16,6 +16,7 @@ */ package org.apache.tomcat.jdbc.pool; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.SQLException; @@ -84,7 +85,16 @@ return connection.getConnection(); } if (isClosed()) throw new SQLException("Connection has already been closed."); - return method.invoke(connection.getConnection(),args); + try { + return method.invoke(connection.getConnection(),args); + }catch (Throwable t) { + if (t instanceof InvocationTargetException) { + InvocationTargetException it = (InvocationTargetException)t; + throw it.getCause()!=null?it.getCause():it; + } else { + throw t; + } + } } public boolean isClosed() { Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/AbstractQueryReport.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/AbstractQueryReport.java?rev=730884&r1=730883&r2=730884&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/AbstractQueryReport.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/AbstractQueryReport.java Fri Jan 2 17:25:56 2009 @@ -19,6 +19,7 @@ import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.sql.CallableStatement; @@ -231,7 +232,12 @@ result = method.invoke(delegate,args); }catch (Throwable t) { reportFailedQuery(query,args,name,start,t); - throw t; + if (t instanceof InvocationTargetException) { + InvocationTargetException it = (InvocationTargetException)t; + throw it.getCause()!=null?it.getCause():it; + } else { + throw t; + } } //measure the time long delta = (process)?(System.currentTimeMillis()-start):Long.MIN_VALUE; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org