2013-02-26 67 views
0

我想創建oracle連接。目前我傳遞jdbc連接來創建結構描述符,在這裏我得到如下異常。所以爲了避免這種情況,需要創建一個java.sql.connection或oracle連接,而不是從數據源獲取。如何在部署在JBoss Server中的Spring應用程序中創建Oracle連接? (WrappedConnectionJDK6不能轉換爲oracle.jdbc.OracleConnection)

org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6不能轉換到oracle.jdbc.OracleConnection

java.lang.ClassCastException: org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6 cannot be cast to oracle.jdbc.OracleConnection 
     at oracle.sql.StructDescriptor.createDescriptor(StructDescriptor.java:160) 
     at oracle.sql.StructDescriptor.createDescriptor(StructDescriptor.java:131) 

下面是一段代碼,其中上述異常即將到來。

Connection conn = getDataSource().getConnection(); 
StructDescriptor itemDescriptor = StructDescriptor.createDescriptor(("EMP_DATA", conn); 
StructDescriptor addressDescriptor = StructDescriptor.createDescriptor("EMP_ADDRESS", conn); 
ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("EMP_TABLE", conn); 

/** Creating Objects */ 
Object[] itemAtributes = new Object[] { 
     "XXX", "XXX", new STRUCT(addressDescriptor, conn, new Object[] { 
       "XXX", "XXX", "XXX" }) }; 

STRUCT itemObject1 = new STRUCT(itemDescriptor, conn, itemAtributes); 

itemAtributes = new Object[] { 
     "YYY", "YYY", new STRUCT(addressDescriptor, conn, new Object[] { 
       "YYY", "YYY", "YYY" }) }; 

STRUCT itemObject2 = new STRUCT(itemDescriptor, conn, itemAtributes); 

STRUCT[] idsArray = { 
     itemObject1, itemObject2 }; 

ARRAY array_to_pass = new ARRAY(descriptor, conn, idsArray); 

/** Calling Procedure */ 
ps = (OraclePreparedStatement) conn.prepareStatement("begin Pr_save_emp(:x); end;");  

在此regared的幫助將不勝感激。

回答

1

錯誤是由於您嘗試將JBOSS的WrappedConnection傳遞到Oracle的實用程序類而導致的。

根據這一https://community.jboss.org/wiki/SetUpAOracleDatasource,你需要做到以下幾點:

Connection dsConn = getDataSource().getConnection(); //JBoss wrapped connection 
Connection conn = ((WrappedConnection)dsConn).getUnderlyingConnection(); //Oracle connection 
//everything else remains the same 
StructDescriptor itemDescriptor = StructDescriptor.createDescriptor(("EMP_DATA", conn); 
//... 
+0

@GMR這篇幫助你嗎?如果是正確答案,請考慮接受,否則請提供您的解決方案。謝謝。 – n1ckolas 2013-02-28 10:46:31

+0

@Nickolas,感謝您的解決方案。它現在適用於我。可以請提供連接方法的API鏈接。 – 2013-03-04 07:15:59

+0

@GMR對不起,但你指的是什麼API? – n1ckolas 2013-03-04 09:46:23

相關問題