2010-05-22 57 views
0

當我敲打SQL驅動程序名稱或數據庫服務器處於脫機狀態時(基本上是任何SQLException),我收到以下異常。由於Spring + iBatis中的SQLException UndeclaredThrowableException?

我無法確定UndeclaredThrowableException來自何處。在194的SqlMapClientTemplate線路是這樣的:

logger.debug("Obtained JDBC Connection [" + springCon + "] for iBATIS operation"); 

這裏是跟蹤:

 
    java.lang.reflect.UndeclaredThrowableException 
     $Proxy59.toString(Unknown Source) 
    java.lang.String.valueOf(Unknown Source) 
    java.lang.StringBuffer.append(Unknown Source) 
    org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:194) 
    org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(SqlMapClientTemplate.java:249) 
    org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:296) 
    org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:290) 

一些我的閱讀點,某種類型的類加載的問題?我無法弄清楚代理服務器在哪裏推出?

回答

1

$Proxy59類必須是springCon變量的類型。它是一個JDK代理類型,可能由Spring框架引入,作爲真正連接的包裝。我知道一個池連接提供程序返回通過代理來禁止close()方法的連接(因爲連接被合併,調用close不是客戶端的任務)。

也許toString()方法的代理處理程序拋出一個檢查異常,這可能與代理機制,但不允許。

Java Documentation說:

  • 「如果檢查異常被調用是不能分配給任何在拋出接口方法的子句中聲明的異常類型,那麼UndeclaredThrowableException中會被拋出代理實例上的方法調用UndeclaredThrowableException將使用invoke方法拋出的異常來構造。「

您是否收到任何其他異常記錄,可能直接在此之前,或作爲異常原因提及?

相關問題