Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.PoolingDataSource

ziggy25Oct 9 2008 — edited Oct 15 2014
Hi All,

I am using jdbc to connect to an oracle database but having a bit of a problem. Here is some details

Jdbc driver - Type 4
App server - Tomcat 5.5
Oracle Version - 10g

I have placed the jdbc driver on both the following directories
$TOMCAT_HOME/common/lib/
$APPLICATION_ROOT_DIR/WEB-INF/lib/
Here is the stack trace of the error i am getting.
09/10/2008 16:38:30 ERR http-8080-Processor23 com.bt.ccs21.presentation.events.CCS21EventAction: Throwable:org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper

java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper

	at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:149)

	at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:115)

	at com.bt.ccs21.data.accessors.ConsignmentDAO.submitDeclaration(ConsignmentDAO.java:251)

	at com.bt.ccs21.presentation.events.consignment.search.SubmitDeclaration.midAction(SubmitDeclaration.java:107)

	at com.bt.ccs21.presentation.events.CCS21EventAction.execute(CCS21EventAction.java:67)

	at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)

	at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)

	at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)

	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)

	at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)

	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)

	at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)

	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)

	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)

	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)

	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)

	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)

	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)

	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)

	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)

	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)

	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)

	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)

	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)

	at java.lang.Thread.run(Thread.java:595)
Here is the java code to get my connection
// JNDI
		Context ctx = null;
		DataSource ds = null;
		Connection conn = null;

			ctx = new InitialContext();
			Context envContext  = (Context)ctx.lookup("java:/comp/env");
			if (ctx != null)
			{
				ds = (DataSource)envContext.lookup(fullname);
				if (ds != null)
				{
					// Enable tracing on this connection...
					if (jdbcTraceFile != null && ds.getLogWriter() == null)
					{
						try
						{
							Log.threadLog(Log.DEBUG, CLASSNAME, METHOD +
								": setting JDBC trace file on DataSource");
							jdbcTraceFile.println("Tracing on JDBC DataSource " + ds.toString());
							ds.setLogWriter(jdbcTraceFile);
						}
						catch (SQLException sqle)
						{
							Log.threadLog(Log.ERROR, CLASSNAME, METHOD +
								": Exception while setting JDBC trace file");
							Log.threadLog(Log.ERROR, CLASSNAME, sqle);
						}
					}
					
					conn = ds.getConnection();
				}
			}
	
And here is the datasource configuration. This is configured in the following file $TOMCAT_HOME/catalina/localhost/context.xml
	<Resource name="jdbc/testdb" auth="Container"
              type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver"
              url="jdbc:oracle:thin:@10.10.10.10:1521:testdb"
              username="testuser" password="testuser" maxActive="20" maxIdle="10"
              maxWait="-1"/>    
The above error is generated if i try to send an oracle.sql.ARRAY object to a plsql in the database. All i am trying the line of code where the code raises an exception is shown below (At line 2 in teh code below)
cst = conn.prepareCall(stp.SUBMIT_CONSIGNMENT_STORED_PROC);
				
				ArrayDescriptor rectabDescriptor = ArrayDescriptor.createDescriptor("CCS21_CONSIGNMENTLIST_TYPE",conn);
				ARRAY awbNoHwbs = new ARRAY(rectabDescriptor,conn,childLessAwbs);
				ARRAY hwbs = new ARRAY(rectabDescriptor,conn,hwbList);
				
				
Any help will be greatly appreciated.

Thanks in advane.

Edited by: ziggy on Oct 9, 2008 5:03 PM
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Nov 7 2008
Added on Oct 9 2008
4 comments
3,309 views