oracle.sql.ArrayDescriptor.createDescriptor中的ClassCastException

时间:2017-07-01 19:39:30

标签: java oracle hibernate tomcat jdbc

我在网络应用程序中创建ClassCastException时收到ArrayDescriptor。 我使用jndi查找从Tomcat DBCP连接池获取连接。 我使用的是ojdbc.jar 14驱动程序jar,Oracle 11g服务器,Tomcat 7服务器和JDK 8。 我没有从池中返回的连接中获取oracle.jdbc.OracleConnection对象。

以下是错误堆栈跟踪:

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)

连接sysout是:

ProxyConnection[PooledConnection[oracle.jdbc.driver.T4CConnection@770799c2]]

以下Tomcat中server.xml中的JNDI配置: -

 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"/>    

使用Hibernate获取连接: -

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

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

我也使用了连接解包方法,但没有用。

1 个答案:

答案 0 :(得分:0)

始终尝试使用最新的JDBC驱动程序,即OTN上可以使用12.2.0.1 JDBC driver