JBoss数据源连接不能创建存储过程数组输入参数
1、从Datasource获取connection后,一般会用以下方式创建ARRAY输入数组参数:
2、但是这样会抛ClassCastException, 这是因为Datasource返回的是一个OracleConnection Wrapper,而ArrayDescription需要一个oracle.jdbc.OracleConnection.
3、按照过往的经验,Wrapper的underlying connection就是oracle.jdbc.OracleConnection的之类或实现:
4、但是这里往往会报奇怪的java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6 cannot be cast to org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6。其原因比较复杂,很可能是JBoss本身ClassLoader所load的WrappedConnectionJDK6不是程序ClassLoader load的WrappedConnectionJDK6。同样的问题会出现在把underlying connection转型成oracle.jdbc.OracleConnection的时候。
5、在ojdbc7中其实ArrayDescriptor和ARRAY类已经被废除,取而代易七淄苷之的是connection.createARRAY方法。但是我们不能直接调用,而是要通过反射机制调用getUnderlyingConnection()方法和createARRAY()方法,从而创建存储过程的数组输入参数。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:63
阅读量:73
阅读量:35
阅读量:83
阅读量:47