【发布时间】:2017-12-05 11:50:33
【问题描述】:
我在 Web 应用程序中创建 ArrayDescriptor 时收到了 ClassCastException。
我正在使用 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 );
}
我也使用了连接解包方法,但不起作用。
【问题讨论】:
-
"我也使用了连接解包方法,但不起作用。"哪个结果和联系让你?
-
在展开期间出错(OracleConnection.class):- 原因:java.sql.SQLException:不是 org.apache.tomcat.jdbc.pool 中 oracle.jdbc.driver.OracleConnection 的包装。 org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:119) 处的 ProxyConnection.unwrap(ProxyConnection.java:87) org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java: 108) 在 org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:81) 在 com.sun.proxy.$Proxy34.unwrap(Unknown Source)
-
应该也适合你。检查这个答案 - stackoverflow.com/a/58233348/8413677
标签: java oracle hibernate tomcat jdbc