私は 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 との相性が良いのはどれですか?