【发布时间】:2013-12-15 00:00:50
【问题描述】:
我使用 jOOQ 2.6.1 和来自 Tomcat (docs) 的池,并且我已将 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 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?
【问题讨论】:
标签: java tomcat jooq pooling autocommit