当我键入SQL驱动程序名称或数据库服务器脱机时,出现以下异常,基本上是任何SQLException。

我无法确定UndeclaredThrowableException的来源。 SqlMapClientTemplate中的第194行是这样的:

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


这是跟踪:

java.lang.reflect.UndeclaredThrowableException
$ Proxy59.toString(未知来源)
java.lang.String.valueOf(未知来源)
java.lang.StringBuffer.append(未知源)
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)


我的一些阅读指向某些类加载问题?我不知道在哪里引入$ Proxy?

最佳答案

$Proxy59类必须是springCon变量的类型。它是JDK代理类型,可能是Spring框架引入的,作为实际连接的包装。我知道有一个池化连接提供程序,该提供程序返回通过代理抑制close()方法的连接(因为连接是池化的,因此调用close不是客户端的任务)。

也许toString()方法的代理处理程序会引发一个已检查的异常,这对于代理机制而言是可能的,但不允许这样做。

Java Documentation说:


“如果调用的检查异常无法分配给接口方法的throws子句中声明的任何异常类型,则代理实例上的方法调用将引发UndeclaredThrowableException。UndeclaredThrowableException将与由invoke方法引发的异常。”


您是否还记录了其他任何异常,也许是在此之前,还是作为异常原因提到的?

关于spring - 由于Spring + iBatis中的SQLException,导致UndeclaredThrowableException吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2886741/

10-11 01:33