成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

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

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

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

獲取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)驗,我們可以通過獲取Wrapper的underlying connection來獲得的實例。但是在某些情況下,會報 cannot be cast to 的奇怪錯誤。這個問題的原因比較復(fù)雜,可能是由于JBoss本身ClassLoader加載了不同版本的WrappedConnectionJDK6。

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

在ojdbc7中,ArrayDescriptor和ARRAY類已被廢除,取而代之的是方法。但是我們不能直接調(diào)用這個方法,而是需要通過反射機制調(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的反射機制解決方法。通過該方法,我們可以順利地創(chuàng)建存儲過程的數(shù)組輸入?yún)?shù),提高了代碼的穩(wěn)定性和可靠性。

標(biāo)簽: