commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dirk Verbeeck <dirk.verbe...@pandora.be>
Subject Re: ClassCastException obtaining wrapped oracle connection
Date Sun, 09 Jan 2005 21:05:49 GMT
If your debugger or a conn.getClass().getName() gives you the same 
classname but you are still getting a ClassCastException then there 
are 2 versions of the oracle class loaded by a different classloader.

Probably one in WEB-INF/lib and one in a tomcat lib directory.

Make sure you only have one copy of the oracle jars in your classpath.

-- Dirk


Mauricio Aristizabal wrote:

> Hello all,
> 
> I am trying to get the actual Oracle connection or statement from the 
> dbcp pool, because I'm trying to use an oracle-specific feature 
> (registerIndexTableOutParameter()), but I cannot cast the underlying 
> connection even after using getInnermostDelegate() to get the wrapped 
> connection.  I am using Tomcat 5.5 and whatever commons library came 
> with it.
> 
> I found this article with some helpful info:
> http://forum.java.sun.com/thread.jspa?forumID=48&messageID=1326953&threadID=326031

> 
> 
> This is what I'm doing:
> OracleConnection oc = (OracleConnection) ((DelegatingConnection) 
> c).getInnermostDelegate();
> 
> If i break on that line my debugger shows the previous statement to return:
> oracle.jdbc.driver.OracleConnection@185e90f
> 
> but I still get this exception when I continue:
> java.lang.ClassCastException: oracle.jdbc.driver.OracleConnection
> 
> 
> I've also tried to get innermost and cast statement itself:
> (oracle.jdbc.driver.OracleCallableStatement)((DelegatingCallableStatement) 
> stmt).getInnermostDelegate()
> 
> and again, debugger indicates I have what i want:
> oracle.jdbc.driver.OracleCallableStatement@16e1782
> 
> but still exception is thrown:
> java.lang.ClassCastException: oracle.jdbc.driver.OracleCallableStatement
> 
> 
> This is what I want to do with the OracleStatement (works fine on 
> Weblogic with same driver):
> ostmt.registerIndexTableOutParameter(3,1000, Types.VARCHAR, 300);
> 
> Here's my context setup:
> <Context path="/OfferCode" docBase="OfferCode"
> debug="5" reloadable="true" crossContext="true">
> 
> <Resource name="jdbc/devdb1b" auth="Container"
> type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
> url="jdbc:oracle:thin:@10.176.50.65:1521:SERV"
> username="asdfasdf" password="asdf" maxActive="20" maxIdle="10"
> maxWait="-1" accessToUnderlyingConnectionAllowed="true"/>
> <ResourceParams name="jdbc/devdb1b">
> <parameter>
> <name>accessToUnderlyingConnectionAllowed</name>
> <value>true</value>
> </parameter>
> </ResourceParams>
> </Context>
> 
> Thanks in advance for lending us a hand.
> 
> -Mauricio



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org


Mime
View raw message