0

当我输入 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 是在哪里引入的?

4

1 回答 1

1

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

也许代理的toString()方法处理程序会抛出一个检查异常,这在代理机制中是可能的,但不允许。

Java 文档说:

  • “如果调用抛出的检查异常不能分配给接口方法的 throws 子句中声明的任何异常类型,则代理实例上的方法调用将抛出 UndeclaredThrowableException。UndeclaredThrowableException 将构造为调用方法引发的异常。”

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

于 2010-05-22T15:34:30.980 回答