On Fri, Mar 14, 2008 at 5:03 PM, Jim Garrison <[EMAIL PROTECTED]> wrote:
>
> I'm getting a NoSuchMethodError on
> org.apache.commons.dbcp.DelegatingCallableStatement.getInnermostDelegate
> ().
>
> AFAICT DelegatingCallableStatement inherits ultimately from
> DelegatingStatement, which DOES have such a method. I've examined the
> commons-dbcp-1.2.1.jar file that's in the classpath, and the
> inheritance hierarchy looks OK and there IS a getInnermostDelegate()
> method on DelegatingStatement.
>
>
> Since this is running in BusinessObjects' Tomcat 5.0 server I thought
> there might be a classloader problem. I printed out the classloaders
> at the point where the error happens, but the debugging output seems
> to indicate that everything should work -- but I still get the
> exception. I can't really post an SSCCE as this is buried in a much
> larger system that runs only under Tomcat.
>
> Source Fragment
> ===============
>
> import java.sql.*;
> import org.apache.commons.dbcp.DelegatingCallableStatement;
> .
> .
> .
> PreparedStatement stmt;
> .
> .
> .
> protected void executeStatement() throws SQLException
> {
> if ( TPMonitor.TYPE_ORACLE == TPMonitor.getInstance().getDBType() )
> {
> System.out.println("DBTYPE: ORA");
> System.out.println("stmt CLASS: " + stmt.getClass().getName());
> System.out.println("stmt LOADER: " +
> stmt.getClass().getClassLoader().toString());
>
> DelegatingCallableStatement dcs = (DelegatingCallableStatement)
> stmt;
> System.out.println("dcs CLASS: " + dcs.getClass().getName());
> System.out.println("dcs LOADER: " +
> dcs.getClass().getClassLoader().toString());
>
> Statement cs = dcs.getInnermostDelegate();
>
>
> The above statement throws the following exception:
>
> java.lang.NoSuchMethodError:
> org.apache.commons.dbcp.DelegatingCallableStatement.getInnermostDelegate
> ()Ljava/sql/CallableStatement;
>
>
>
> Debugging Output
> ================
>
> DBTYPE: ORA
> stmt CLASS: org.apache.commons.dbcp.DelegatingCallableStatement
> stmt LOADER: StandardClassLoader
> delegate: true
> repositories:
> file:C:\Program Files\Business Objects\Tomcat\common\classes\
> file:C:\Program Files\Business
> Objects\Tomcat\common\endorsed\xalan.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\endorsed\xercesImpl.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\endorsed\xml-apis.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\ant-launcher.jar
> file:C:\Program Files\Business Objects\Tomcat\common\lib\ant.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\commons-collections-2.1.1.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\commons-dbcp-1.2.1.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\commons-el.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\commons-pool-1.2.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\jasper-compiler.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\jasper-runtime.jar
> file:C:\Program Files\Business Objects\Tomcat\common\lib\jsp-api.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\naming-common.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\naming-factory.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\naming-java.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\naming-resources.jar
> file:C:\Program Files\Business Objects\Tomcat\common\lib\ojdbc14.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\servlet-api.jar
> file:C:\Program Files\Business Objects\Tomcat\common\lib\sqljdbc.jar
> ----------> Parent Classloader:
> [EMAIL PROTECTED]
>
> dcs CLASS: org.apache.commons.dbcp.DelegatingCallableStatement
> dcs LOADER: StandardClassLoader
> delegate: true
> repositories:
> file:C:\Program Files\Business Objects\Tomcat\common\classes\
> file:C:\Program Files\Business
> Objects\Tomcat\common\endorsed\xalan.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\endorsed\xercesImpl.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\endorsed\xml-apis.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\ant-launcher.jar
> file:C:\Program Files\Business Objects\Tomcat\common\lib\ant.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\commons-collections-2.1.1.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\commons-dbcp-1.2.1.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\commons-el.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\commons-pool-1.2.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\jasper-compiler.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\jasper-runtime.jar
> file:C:\Program Files\Business Objects\Tomcat\common\lib\jsp-api.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\naming-common.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\naming-factory.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\naming-java.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\naming-resources.jar
> file:C:\Program Files\Business Objects\Tomcat\common\lib\ojdbc14.jar
> file:C:\Program Files\Business
> Objects\Tomcat\common\lib\servlet-api.jar
> file:C:\Program Files\Business Objects\Tomcat\common\lib\sqljdbc.jar
> ----------> Parent Classloader:
> [EMAIL PROTECTED]
>
>
> java.lang.NoSuchMethodError:
> org.apache.commons.dbcp.DelegatingCallableStatement.getInnermostDelegate
> ()Ljava/sql/CallableStatement;
This looks like a signature from dbcp 1.1. Are you sure you used dbcp
1.2+ when you compiled the classes below? In dbcp 1.1,
getInnermostDelegate is implemented in DelegatingCallableStatement and
it returns a CallableStatement. In 1.2, inheritance is as you
describe and this method returns a Statement (which you need to cast
to CallableStatement).
Phil
> at
> com.troux.reportingData.impactAnalysis.AssetAnalysisResultQuery.executeS
> tatement(AssetAnalysisResultQuery.java:135)
> at com.troux.servercommon.db.TPDBCalls.doTry(TPDBCalls.java:40)
> at
> com.troux.servercommon.db.TPHelperBase.doATry(TPHelperBase.java:160)
> at com.troux.servercommon.db.TPQuerier.doATry(TPQuerier.java:79)
> at
> com.troux.servercommon.db.TPHelperBase.handleDatabaseAccess(TPHelperBase
> .java:207)
> at
> com.troux.servercommon.db.TPHelperBase.handleDatabaseAccess(TPHelperBase
> .java:188)
> at
> com.troux.reportingData.impactAnalysis.AssetAnalysisResultGenerator.gene
> rateResults(AssetAnalysisResultGenerator.java:46)
> at
> com.troux.reportingData.impactAnalysis.AssetAnalyzerImpl.generateResults
> (AssetAnalyzerImpl.java:24)
> at
> com.troux.reportingData.impactAnalysis.AssetAnalysisServlet.processReque
> st(AssetAnalysisServlet.java:121)
> at
> com.troux.reportingData.impactAnalysis.AssetAnalysisServlet.doGet(AssetA
> nalysisServlet.java:140)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> tionFilterChain.java:237)
>
> etc, etc.
>
> IMPORTANT NOTICE:
> This message may contain confidential information. If you have received this
> e-mail in error, do not use, copy or distribute it. Do not open any
> attachments. Delete it immediately from your system and notify the sender
> promptly by e-mail that you have done so. Thank you.
>
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: [email protected]
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To start a new topic, e-mail: [email protected]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]