java.lang.classcastexception com.ibm.ws.rsadapter.jdbc.wsjdbcconnection несовместим с oracle.jdbc.oracleConnection - PullRequest
0 голосов
/ 02 ноября 2018

Столкновение с java.lang.classcastexception com.ibm.ws.rsadapter.jdbc.wsjdbcconnection несовместимо с oracle.jdbc.oracleConnection в веб-сфере 8.5. Приложение работает правильно в weblogic

Я получаю это исключение при запуске моего кода на Websphere8.5 с использованием JNDI. Однако этот же код работает нормально на Weblogic 8.1, Tomcat 5.5, JBoss 4.2.x. Код также работает нормально через JNDI с использованием источников данных (WebSphere Application Server V4)

И код также работает нормально, когда я запускаю приложение через не JNDI. Но нижеприведенное исключение наступает, когда я использую конфигурацию источника данных в Websphere через JNDI.

Ниже приведена StackTrace Исключения

com.ibm.ws.rsadapter.jdbc.WSJdbcConnection incompatible with oracle.jdbc.OracleConnection
*java.lang.ClassCastException: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection incompatible with oracle.jdbc.OracleConnection*
        at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:149)
        at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:115)
        at com.syfact.mo.administrator.pctr.LoadAction.loadPostalcodes(LoadAction.java:182)
        at com.syfact.mo.administrator.pctr.LoadAction.doAction(LoadAction.java:490)
        at com.syfact.web.servlet.Syfact.processStandardCommand(Syfact.java:370)
        at com.syfact.web.servlet.Syfact.doPost(Syfact.java:291)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:966)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:907)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
        at com.syfact.ConnectionFilter.doFilter(ConnectionFilter.java:40)
        at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:696)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:641)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:475)
        at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:463)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3107)
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:238)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811)
        at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1425)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:92)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:394)
        at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
        at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:152)
        at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:213)
        at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions(AbstractAsyncFuture.java:195)
        at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
        at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:193)
        at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:725)
        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:847)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1498)

Я почти неделю искал решения этой проблемы и нашел:

Пример:

connection = (Connection) WSJdbcUtil.getNativeConnection((WSJdbcConnection)dataSource.getConnection()); 
OracleCallableStatement ocstmt = (OracleCallableStatement) connection.prepareCall(sql); "*

Я не хочу, чтобы в моем проекте были библиотеки WAS, потому что мой код должен быть развернут не только в WebSphere, но и в Tomcat, JBoss, Weblogic .etc ......

1 Ответ

0 голосов
/ 02 ноября 2018

Чтобы получить доступ к интерфейсам, зависящим от производителя драйвера JDBC, вам нужно использовать специально разработанный для этой цели API развертывания JDBC,

OracleConnection oraCon = connection.unwrap(oracle.jdbc.OracleConection.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...