If it helps, this is what I used to use for GlassFish:
OracleDataSource ods = ds.unwrap(OracleDataSource.class); OracleConnection conn = (OracleConnection) ods.getConnection(); conn = ds.getConnection(); sql_a ="INSERT INTO MY_TABLE (my_value1, my_value2) VALUES (?,?)"; ps_a = (OraclePreparedStatement) conn.prepareStatement(sql_a); but it gives the error, java.lang.NullPointerException with Tomcat. > > On May 14, 2017 at 4:34 PM gkk gb <[email protected]> wrote: > > 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 >
