3

我使用 jOOQ 2.6.1 和来自 Tomcat(文档)的池,并且我已将自动提交设置为 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 DataSource 对象:

org.apache.tomcat.jdbc.pool.DataSource dataSource = new DataSource
dataSource.setPoolProperties(p);

我使用 Spring 的LazyConnectionDataSourceProxy

LazyConnectionDataSourceProxy lazyConnection = new LazyConnectionDataSourceProxy(dataSource);


从 jOOQ 2.6.1 开始使用Factory

public Factory createFactory() {
    Settings settings = new Settings();
    settings.getExecuteListeners().add(
            "de.si.srv.data.SpringExceptionTranslationExecuteListener");
    return new Factory(dataSource, SQLDialect.POSTGRES, settings);
}

例如,如果我做这样的选择:

createFactory().select().from().fetch()

... jOOQ 应该自动关闭连接!但是 jOOQ 并没有关闭连接。一段时间后,所有连接都被放弃了。

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

哪个更适合 jOOQ?

4

1 回答 1

1

在 jOOQ 3.x 中,围绕该区域进行了很多更改和修复,最重要的是:

还是我应该使用其他池化框架?

我不认为另一个池化框架会有所帮助,在这里。

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

  • 修补 jOOQ 并修复此问题
  • 自己处理DataSource/Connection生命周期并将 a 传递Connection给 jOOQ
于 2013-12-15T06:27:58.620 回答