2016-08-01 26 views
-1

#1的錯誤所致在COM(DB2DataStoreHelper.java:430) 在com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) .ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在com.ibm.websphere.rsadapter.DB2DataStoreHel per.findMappingClass(DB2DataStoreHelper.java:445) 在com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445) 在JSR-352:在com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass在java.lang.Integer.valueOf(Integer.java:844)java.lang.StackOverflowError的 :在DB2DataStoreHelper.findMappingClass

.... ...

此com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445)會一直髮生,直到出現一個stackoverflow e RROR。當我在Writer的writeItems()中調用executeBatch()時發生錯誤,所以我不確定它發生在何處或爲什麼。

面對類似問題的用戶在3年前提出這個問題。但是沒有任何反應,重新運行也沒有幫助。

Infinite loop in DB2 JDBC driver

+0

你可以發佈一些示例代碼? –

+0

堆棧的底部是什麼樣的?即將代碼獲取到findMappingClass()無限循環中的調用集合 –

+0

其餘調用本質上是相同的com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass(DB2DataStoreHelper.java:445一百次然後writeItems( )line java 126。這行號是我在那裏Statement.executeBatch() –

回答

0

這看起來像得到的是如何創建的SQLException錯誤。

什麼在您的方案DB2DataStoreHelper.findMappingClass()正在發生的事情實際上是這樣的:

public Class<?> findMappingClass(SQLException e) { 
    // Check if 'e' is in the error map anywhere, 
    // if it is, return the class. 

    // otherwise, check the next exception in the chain 
    SQLException next = e.getNextException(); 
    return findMappingClass(next); 
} 

所以,如果你有2層或更多的SQLException創造一個週期,如:

SQLException a = new SQLException(); 
SQLException b = new SQLException(); 

a.setNextException(b); 
b.setNextException(a); 

那麼你的例外是無效的,因爲它創建了一個循環。因此,任何試圖處理SQLException鏈的代碼都會像觀察一樣進入無限循環。

查看您的應用程序代碼以確保在任何例外情況下都沒有創建週期。

相關問題