gpt4 book ai didi

java - AutoCommit 不适用于 jOOQ 2.6.1 和 Tomcat 池

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:39 25 4
gpt4 key购买 nike

我使用 jOOQ 2.6.1 和来自 Tomcat 的池化 (docs),并且我已将自动提交设置为 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?

最佳答案

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

or should i use an other pooling framework ?

我认为另一个池化框架在这里没有帮助。

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

  • 给 jOOQ 打补丁并解决这个问题
  • 自己处理DataSource/Connection 生命周期并将Connection 传递给jOOQ

关于java - AutoCommit 不适用于 jOOQ 2.6.1 和 Tomcat 池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20589693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com