久久精品国产99国产精品,农村大炕弄老女人,人马配速90分钟,香蕉成人伊视频在线观看

JBoss數(shù)據(jù)源連接不能創(chuàng)建存儲過程數(shù)組輸入?yún)?shù)的解決方法

在使用JBoss Datasource獲取connection并為Oracle存儲過程創(chuàng)建數(shù)組輸入?yún)?shù)時,有時會遇到的問題。本文將介紹一種基于ojdbc7的反射機(jī)制解決方法。獲取Connection和

在使用JBoss Datasource獲取connection并為Oracle存儲過程創(chuàng)建數(shù)組輸入?yún)?shù)時,有時會遇到的問題。本文將介紹一種基于ojdbc7的反射機(jī)制解決方法。

獲取Connection和創(chuàng)建Array輸入?yún)?shù)

通常我們從Datasource獲取connection后,會使用如下方式創(chuàng)建ARRAY輸入數(shù)組參數(shù):

```

ArrayDescriptor descriptor ("ARRAY_TYPE", connection.unwrap());

ARRAY array new ARRAY(descriptor, connection.unwrap(), inputArray);

```

然而,由于Datasource返回的是一個OracleConnection Wrapper,而ArrayDescriptor需要一個,因此會拋出ClassCastException。

解決ClassCastException問題

根據(jù)以往經(jīng)驗(yàn),我們可以通過獲取Wrapper的underlying connection來獲得的實(shí)例。但是在某些情況下,會報 cannot be cast to 的奇怪錯誤。這個問題的原因比較復(fù)雜,可能是由于JBoss本身ClassLoader加載了不同版本的WrappedConnectionJDK6。

使用反射機(jī)制創(chuàng)建存儲過程數(shù)組輸入?yún)?shù)

在ojdbc7中,ArrayDescriptor和ARRAY類已被廢除,取而代之的是方法。但是我們不能直接調(diào)用這個方法,而是需要通過反射機(jī)制調(diào)用getUnderlyingConnection()方法和createARRAY()方法來創(chuàng)建存儲過程的數(shù)組輸入?yún)?shù)。

解決方法步驟

1. 通過反射獲取connection對象的underlying connection。

2. 使用反射調(diào)用underlying connection的createARRAY方法,傳入相應(yīng)的參數(shù)以創(chuàng)建存儲過程的數(shù)組輸入?yún)?shù)。

通過以上步驟,我們可以成功創(chuàng)建存儲過程的數(shù)組輸入?yún)?shù),避免了ClassCastException等問題。

總結(jié):

本文介紹了在使用JBoss Datasource獲取connection并為Oracle存儲過程創(chuàng)建數(shù)組輸入?yún)?shù)時可能遇到的問題,并提供了一種基于ojdbc7的反射機(jī)制解決方法。通過該方法,我們可以順利地創(chuàng)建存儲過程的數(shù)組輸入?yún)?shù),提高了代碼的穩(wěn)定性和可靠性。

標(biāo)簽:
主站蜘蛛池模板: 工布江达县| 鹤峰县| 恭城| 杂多县| 昂仁县| 山丹县| 若尔盖县| 湟中县| 黎川县| 浙江省| 成安县| 梁平县| 遂川县| 宁德市| 永川市| 祁东县| 上犹县| 兴安县| 民勤县| 丽江市| 交口县| 溧水县| 紫阳县| 宁国市| 崇左市| 赤水市| 延津县| 宁蒗| 淮北市| 兴城市| 抚宁县| 长武县| 葫芦岛市| 鄱阳县| 辽阳县| 陇西县| 宜君县| 英德市| 穆棱市| 蒲城县| 岳阳市|