连接文件
InitialContext initialContext = new InitialContext();
Context context = (Context) initialContext.lookup("java:comp/env");
//The JDBC Data source that we just created
DataSource ds = (DataSource) context.lookup("connpool");
this.con = ds.getConnection();
this.des=ArrayDescriptor.createDescriptor("ARRAY_INT",this.con);
System.out.println("in set array1");
this.arr_to_pass=new ARRAY(this.des,this.con,arr);
this.csmt.setArray(index, this.arr_to_pass);
但是我遇到了以下异常
java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper cannot be cast to oracle.jdbc.OracleConnection
最佳答案
我猜ClassCastException
被抛出到这一行
this.con = ds.getConnection();
您的代码未显示 this.con
的类型,但它必须是 OracleConnection
。您不能这样做,因为连接是包装的 dbcp 连接。
如果你想获取Oracle Connection,你必须先用BasicDataSource.unwrap(Class<T> iface)
解开它。 。您还可以使用BasicDataSource.isWrapperFor(Class<?> iface)
之前,检查包装的连接是否是 Oracle Connection 类型,以避免强制转换异常:)
例如:
if (ds.getConnection().isWrapperFor(OracleConnection.class)) {
this.con = ds.getConnection().unwrap(OracleConnection.class);
}
关于java - org.apache.tomcat.dbcp.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper 无法转换为 oracle.jdbc.OracleConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39815379/