2

我使用 jooq 在 Wildfly Web 应用程序中处理 PostgreSQL 数据库上的 SQL 查询。按照http://awolski.com/integrating-jooq-easy/上的示例,通过 CDI 将 DSLContext 注入到我的 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();
            }
        ...
        }

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

4

1 回答 1

2

构造函数是关键点。

由于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/

于 2018-01-30T13:43:36.117 回答