由于Spring + iBatis中的SQLException导致UndeclaredThrowableException?

时间:2010-05-22 02:37:27

标签: spring ibatis java spring-jdbc

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

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

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)

我的一些阅读指向某种类型的类加载问题?我无法弄清楚$ Proxy的引入位置?

1 个答案:

答案 0 :(得分:1)

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

也许代理的toString()方法的处理程序抛出一个已检查的异常,这可以通过代理机制实现,但不允许。

Java Documentation说:

  • “如果调用抛出了一个不能分配给接口方法的throws子句中声明的任何异常类型的调用异常,那么代理实例上的方法调用将抛出UndeclaredThrowableException .UndeclaredThrowableException将使用invoke方法抛出的异常构造。“

您是否记录了任何其他异常,可能在此之前直接记录,或者作为异常原因提及?

相关问题