卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

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

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

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

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

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

```

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

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

```

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

解決ClassCastException問(wèn)題

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

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

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

解決方法步驟

1. 通過(guò)反射獲取connection對(duì)象的underlying connection。

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

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

總結(jié):

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

標(biāo)簽: