2014-01-21 53 views
3

我試圖連接到運行在WebSphere上的Java應用程序內的Oracle數據庫。我需要能夠創建一個數組描述符用於調用過程。獲取oracle.jdbc.driver.LogicalConnection,需要oracle.jdbc.OracleConnection

的代碼看起來是這樣的:

Connection conn=null; 
ArrayDescriptor arrayDescriptor; 
Connection tmpCon = jdbcTemplate.getDataSource().getConnection(); 
conn = WSCallHelper.getNativeConnection(tmpCon); 
arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",conn); 
IDs = new oracle.sql.ARRAY(arrayDescriptor, conn, list.toArray()); 

調用ArrayDescriptor.createDescriptor線罰中一類轉換異常

 
java.lang.ClassCastException: oracle.jdbc.driver.LogicalConnection incompatible with oracle.jdbc.OracleConnection 
    at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:149) 
    at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:115) 

通過這個走與調試,我可以看到,conn絕對是一個oracle.jdbc.driver.LogicalConnection 。問題是在我的代碼,我不能實際引用LogicalConnection因爲這個類不是公共的,所以我不能只是做這樣的事情:

arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",((LogicalConnection)conn).getWrapper()); 

這:

arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",((oracle.jdbc.driver.OracleConnection)conn).getWrapper()); 

也返回一個類轉換異常:

java.lang.ClassCastException: oracle.jdbc.driver.LogicalConnection incompatible with oracle.jdbc.driver.OracleConnection

我需要有一個OracleConnection對象,但我似乎無法得到一個從獲取LogicalConnection回到我身邊。有沒有人見過這個?我覺得我在這裏錯過了一些非常明顯的東西,但也許我只是需要另一杯咖啡......

+0

一些谷歌命中暗示不兼容的驅動程序可能會導致這種情況。你的WebSphere設置中是否有早期版本的ojdbc版本,或者在你的類路徑中的某處,還是在應用程序中打包了? –

+0

@AlexPoole:有趣的想法。我不認爲我有一個不同版本的ojdbc庫,但我會看看。除非我開始編寫代碼手動將數組傳遞給過程,否則應用程序可以正常工作。 – FrustratedWithFormsDesigner

+0

@AlexPoole:看起來你是對的! – FrustratedWithFormsDesigner

回答

2

@Alex Poole指出我正確的方向。 Maven包含一個Oracle jar版本10.2.0.1.0,而WebSphere有相同的jar版本,但版本爲10.2.0.4.0。

修復POM後,10.2.0.1.0版本jar無法部署,問題似乎得到解決。

相關問題