2017-07-01 171 views
0

在Web應用程序中創建ArrayDescriptor時,我得到ClassCastException。 我使用jndi查找從Tomcat DBCP連接池獲取連接。 我正在使用ojdbc.jar 14驅動程序jar,Oracle 11g服務器,Tomcat 7服務器和JDK 8. 我沒有從池中返回的連接中獲取oracle.jdbc.OracleConnection對象。oracle.sql.ArrayDescriptor.createDescriptor中的ClassCastException

下面是錯誤堆棧跟蹤:

java.lang.ClassCastException: com.sun.proxy.$Proxy34 cannot be cast to oracle.jdbc.OracleConnection 
     at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:149) 
     at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:115) 

連接系統輸出是:在server.xml中

ProxyConnection[PooledConnection[[email protected]]] 

JNDI配置在下面的Tomcat: -

Resource 
     name="jdbc/my_db" 
     auth="Container"`` 
     type="javax.sql.DataSource" 
     factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
     initialSize="5" 
     maxActive="5" 
     maxIdle="2" 
     minIdle="1" 
     maxTotal="10" 
     maxWaitMillis="10000" 
     timeBetweenEvictionRunsMillis="34000" 
     minEvictableIdleTimeMillis="55000" 
     validationQuery="SELECT 1 FROM DUAL" 
     validationInterval="34000" 
     testOnBorrow="true" 
     removeAbandoned="true" 
     removeAbandonedTimeout="55" 
     driverClassName="oracle.jdbc.OracleDriver" 
     url="jdbc:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
     username="aaaaaaa" 
     password="bbbbbbbbbb" 
     connectionProperties="SetBigStringTryClob=true" 
     accessToUnderlyingConnectionAllowed="true"/>  

使用休眠獲得連接: -

getSession().doWork(new Work() { 
      @Override 
      public void execute(Connection connection) throws SQLException { 

       ArrayDescriptor descNum = 
    ArrayDescriptor.createDescriptor("ARRAY_NUMC", connection); 
} 

我也用連接解包方法,但不起作用。

+0

「我也使用了連接解包方法,但不起作用。」哪個結果和聯繫能夠幫助你? – davidxxx

+0

在解包期間(OracleConnection.class)出現錯誤: - 引起:java.sql.SQLException:不是org.apache.tomcat.jdbc.pool.ProxyConnection.unwrap處的oracle.jdbc.driver.OracleConnection 的包裝(ProxyConnection .java:87) at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:119) at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108) 位於org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:81) at com.sun.proxy。$ Proxy34.unwrap(Unknown Source) –

回答