Java 博内普公司;Derby-如何正确关机

Java 博内普公司;Derby-如何正确关机,java,jdbc,derby,bonecp,Java,Jdbc,Derby,Bonecp,我有: 但是,这会导致以下例外情况: BoneCP CONNECTION_POOL = ...; CONNECTION_POOL.getConfig().setJdbcUrl("jdbc:derby:database...;shutdown=true"); Connection connection = CONNECTION_POOL.getConnection(); connection.close(); CONNECTION_POOL.shutdown(); 我怎样才能避免这个例外。我已经

我有:

但是,这会导致以下例外情况:

BoneCP CONNECTION_POOL = ...;
CONNECTION_POOL.getConfig().setJdbcUrl("jdbc:derby:database...;shutdown=true");
Connection connection = CONNECTION_POOL.getConnection();
connection.close();
CONNECTION_POOL.shutdown();

我怎样才能避免这个例外。我已经尝试了我能想到的所有可能的方法…

除非您运行的是v0.8.1-beta2或更高版本,否则请在配置中将“disableConnectionTracking”设置为true


请注意,在成功关闭后,您还应该预期Derby会出现SQLException:

您使用的是嵌入式驱动程序吗?这是完整的堆栈跟踪吗?还是你在修剪它?奇怪的是,没有一个代码出现在堆栈跟踪中……这是完整的堆栈跟踪。如果您运行的代码正是您所得到的。其中一个问题仍然存在,问题是调用实际上并不像直接执行DriverManager.getConnection(…)时那样关闭数据库。所以无论BoneCP在做什么,它都不会让Derby线程像通常那样结束。。。
3274 [com.google.common.base.internal.Finalizer] ERROR com.jolbox.bonecp.ConnectionPartition - Error while closing off internal db connection
java.sql.SQLException: Cannot close a connection while a transaction is still active.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.checkForTransactionInProgress(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.close(Unknown Source)
    at com.jolbox.bonecp.ConnectionPartition$1.finalizeReferent(ConnectionPartition.java:187)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.common.base.internal.Finalizer.cleanUp(Finalizer.java:154)
    at com.google.common.base.internal.Finalizer.run(Finalizer.java:127)