Java 自动提交不适用于jOOQ 2.6.1和Tomcat池

Java 自动提交不适用于jOOQ 2.6.1和Tomcat池,java,tomcat,jooq,pooling,autocommit,Java,Tomcat,Jooq,Pooling,Autocommit,我使用了jooq2.6.1和Tomcat()中的池,并将autocommit设置为true PoolProperties p = new PoolProperties(); p.setDefaultAutoCommit(true); p.setJdbcInterceptors("org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;" + "org.apache.tomcat.jdbc.poo

我使用了jooq2.6.1和Tomcat()中的池,并将autocommit设置为true

PoolProperties p = new PoolProperties();
p.setDefaultAutoCommit(true); 
p.setJdbcInterceptors("org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;" +
                      "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");
p.setRemoveAbandoned(true);
p.setRemoveAbandonedTimeout(10);
然后我创建了一个Apache数据源对象:

org.apache.tomcat.jdbc.pool.DataSource dataSource = new DataSource
dataSource.setPoolProperties(p);
我使用Spring的LazyConnectionDataSourceProxy:

LazyConnectionDataSourceProxy lazyConnection = new LazyConnectionDataSourceProxy(dataSource);

根据jOOQ 2.6.1,在工厂使用:

例如,如果我这样选择:

createFactory().select().from().fetch()
。。。jOOQ应该自动关闭连接!但是jOOQ没有关闭连接。。一段时间后,所有连接都被放弃

有人知道我的问题的解决办法吗?我希望jOOQ自动关闭连接!还是应该使用其他池框架


jOOQ的哪一个更好?

在jOOQ 3.x中,这方面有很多更改和修复,最重要的是:

还是应该使用其他池框架

我不认为另一个池框架会有所帮助

如果您想继续使用jOOQ 2.6.1(而不是升级到jOOQ 3.2),我想您可能需要:

  • 修补jOOQ并修复此问题
  • 自己处理
    数据源
    /
    连接
    生命周期,并将
    连接
    传递给jOOQ

jooq 3.x的问题在于我们必须迁移很多东西。修补此问题会更容易。但我不知道从哪里开始。我到底应该修补什么以及在代码中的什么位置?我同意,迁移到jOOQ 3.x对这样一个问题的影响可能太大了。但在这方面的各种修复都是很难实现的。修补它们并不容易。如果您希望我们帮助您解决Jooq2.6.x的问题,您可能会幸运地得到,或者。您可以自行评估这是否比自己维护连接生命周期更容易。无论如何,我认为这超出了堆栈溢出问题的范围。大多数情况下,它与被放弃的连接一起工作,因为我设置了选项“setRemoveBandoned(true);setRemoveBandonedTimeout(10);”,因此连接将返回池。但有时我会遇到以下错误:这个exc:org.springframework.jdbc.uncategorizedsqlsexception:jOOQ;SQL的未分类SQLException。。。SQL状态[null];错误代码[0];连接已关闭。;嵌套异常为java.sql.SQLException:连接已关闭。“如果您知道解决方案”,连接已关闭“这个问题对我有帮助。让我们在网上讨论这个问题。”。请提供堆栈跟踪,可能还有一个简单的案例来重现此问题。这对于堆栈溢出上的小空间来说太多了。。。
createFactory().select().from().fetch()