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変数の型でなければなりません。これは、実際の接続のラッパーとして、おそらく Spring フレームワークによって導入された JDK プロキシ タイプです。プロキシ経由でメソッドを抑制する接続を返す、プールされた接続プロバイダーを知っていますclose()(接続がプールされているため、close の呼び出しはクライアントのタスクではありません)。

メソッドのプロキシのハンドラーがtoString()チェック例外をスローする可能性があります。これは、プロキシの仕組みでは可能ですが、許可されていません。

Java ドキュメントには次のように書かれています。

  • 「インターフェイス メソッドの throws 句で宣言されたどの例外タイプにも割り当てられないチェック済み例外が呼び出しによってスローされた場合、プロキシ インスタンスでのメソッド呼び出しによって UndeclaredThrowableException がスローされます。 UndeclaredThrowableException は次のように構築されます。呼び出しメソッドによってスローされた例外。」

おそらくその直前に、または例外の原因として言及されている、他の例外がログに記録されていますか?

于 2010-05-22T15:34:30.980 に答える