我在网络应用程序中创建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 );
}
我也使用了连接解包方法,但没有用。