2

ここで、「ds」は次のように初期化されたBoneCPDataSourceです。

    final BoneCPDataSource ds = new BoneCPDataSource();
    ds.setJdbcUrl("...");
    ds.setUser("...");
    ds.setPassword("...");
    ds.setCloseConnectionWatch(true);
    ds.setCloseConnectionWatchTimeout(1, TimeUnit.MINUTES);

これが私のコード全体でそれをどのように使用しているかです:

try (Connection c = ds.getConnection()) {
    // do stuff with c, this takes 10 seconds at most
c.commit();
} catch (final Exception e) {
    logger.error("Report error", e);
}

しかし、私はこれらを見ています:

警告:BoneCPは閉じられていない接続を検出し、接続を閉じようとします。アプリケーションでこの接続を閉じる必要があります-追加のデバッグ支援のためにconnectionWatchを有効にします。2012年3月23日9:55:17AMcom.jolbox.bonecp.ConnectionPartition $ 1 finalizeReferent

接続を閉じずに接続のファイナライザーが呼び出されているようですが、これはどうしてですか?try-with-resourceは、接続が閉じられることを保証しませんか?

その後、私はこれらのエラーを受け取り始めます:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

これらのファイナライズされたクローズされていない例外が作成されているスタックトレースをboneCPに表示させる方法はありますか?誰かが問題が何であるかを提案できますか?

4

2 に答える 2

0

このバグは v0.8.0-beta1 で修正されていると思われます

于 2012-11-01T09:51:10.730 に答える