注入的JOOQ Context泄漏连接

时间:2018-01-29 11:24:59

标签: java java-ee cdi jooq connection-leaks

我使用jooq来处理Wildfly Web应用程序中PostgreSQL数据库上的SQL查询。根据{{​​3}}上的示例,DSLContext通过CDI注入我的bean。 bean看起来像这样:

public class Foo {
    private @Inject DSLContext jooq;
    ...
    public boolean update....
        {
        ...
            try {
                jooq.doStuff();    
            }
            catch(Exception e) {
                System.out.println(e.getCause().getMessage());
            }
            finally {
                jooq.close();
            }
        ...
        }

当我运行应用程序时,每个连接都会泄漏。我错过了什么?

1 个答案:

答案 0 :(得分:1)

构造函数是关键点。

由于https://www.jooq.org/doc/3.10/manual/sql-building/dsl-context/connection-vs-datasource/上的文档说jooq将管理连接,因此传递数据源对象而不是连接对象可以解决问题:

public DSLContext getDSLContext() throws SQLException {
    return DSL.using(ds, SQLDialect.MYSQL);
}
http://awolski.com/integrating-jooq-easy/

中的