JBoss数据源连接不能创建存储过程数组输入参数

 时间:2026-02-24 05:05:55

1、从Datasource获取connection后,一般会用以下方式创建ARRAY输入数组参数:

JBoss数据源连接不能创建存储过程数组输入参数

2、但是这样会抛ClassCastException, 这是因为Datasource返回的是一个OracleConnection Wrapper,而ArrayDescription需要一个oracle.jdbc.OracleConnection.

JBoss数据源连接不能创建存储过程数组输入参数

3、按照过往的经验,Wrapper的underlying connection就是oracle.jdbc.OracleConnection的之类或实现:

JBoss数据源连接不能创建存储过程数组输入参数

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的时候。

JBoss数据源连接不能创建存储过程数组输入参数

5、在ojdbc7中其实ArrayDescriptor和ARRAY类已经被废除,取而代之的是connection.createARRAY方法。但是我们不能直接调用,而是要通过反射机制调用getUnderlyingConnection()方法和createARRAY()方法,从而创建存储过程的数组输入参数。

JBoss数据源连接不能创建存储过程数组输入参数

  • 存储过程怎么调试
  • LabVIEW-数组-数组插入
  • JBoss启动异常——常见错误
  • LabVIEW-数组-创建数组
  • 存储过程如何调用外部exe程序
  • 热门搜索
    酸菜肉丝面的做法 粉蒸排骨的做法 拔丝红薯的做法视频 鲜竹笋的做法 地三鲜的家常做法 白吉馍卤肉的做法 咖喱牛肉的做法 流苏的做法 腊肉怎么做好吃 蒸排骨的家常做法