我使用 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?