当我键入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/