I'm porting my code from GlassFish to Tomcat 8.5.9, and have mostly everything 
working for my web app. I've created a JDBC pool, and can access oracle 11.2G 
stored procedures, etc. The one issue remaining is accessing oracle 11.2G 
database from java code directly using an OraclePreparedStatement. The 
following code,


Context initCtx = new InitialContext(); Context envCtx = (Context) 
initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/myOracleDBpool");

conn = ds.getConnection(); 

sql_a ="INSERT INTO MY_TABLE (my_value1, my_value2) VALUES (?,?)";
ps_a = (OraclePreparedStatement) conn.prepareStatement(sql_a);


gives the error:


java.lang.ClassCastException: 
org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement cannot be cast to 
oracle.jdbc.OraclePreparedStatement

at com.myapp.myfunc(myClass2.java:2084)

at com.myapp.myfunc(myClass1.java:10077)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at 
flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:418)

at 
flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)

at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1400)

at 
flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:1005)

at 
flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:103)

at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)

at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)

at 
flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)

at 
flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:166)

at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:291)

at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:353)

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

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

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

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

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

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

at com.jitterlabs.filters.CharsetFilter.doFilter(CharsetFilter.java:49)

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

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

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

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

at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)

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

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

at 
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)

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

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

at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:478)

at 
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

at 
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)

at 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437)

at 
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)


I've configured my tomcat files using the following link as a guide:


https://tomcat.apache.org/tomcat-8.5-doc/jndi-datasource-examples-howto.html


specifically the section on Oracle 8i, 9i, & 10g (context configuration and 
web.xml). 


Any idea how to resolve this? Thanks in advance for any help. -Gerry

Reply via email to