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
> 

Reply via email to