【问题标题】:Is there a way to get a connection from wildfly connection pool?有没有办法从wildfly连接池获取连接?
【发布时间】:2017-04-27 10:14:00
【问题描述】:

我正在尝试使用 Wildfly 10.0 应用程序服务器和 Querydsl。我的问题是 Querydsl 需要一个连接来评估 SQL 查询。这段代码 sn-p 显示了我可以获得连接的唯一方法。

@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
@Singleton
public class ServiceTest {

    @Resource(lookup = "java:jboss/datasources/postgresDS")
    private DataSource ds;

    public Memeber getMemeberById(final int id) {
        try {
            Connection connection = ds.getConnection();
            Memeber member = new SQLQuery<Memeber>(new Configuration(new PostgreSQLTemplates()))
                    .select(Projections.bean(Memeber.class, QMember.member.id.as(Memeber.ID),
                            QMember.member.name.as(Memeber.NAME)))
                    .from(QMember.member).where(QMember.member.id.eq(id)).fetchOne();
            connection.close();
            return member;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

}

此解决方案可行,但会产生一些问题。如果所有连接都在使用中,ds.getConnection() 会抛出 javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/postgresDS 异常。

有什么方法可以访问 Wildfly 连接池来获取连接? SQL 运行后返回连接池?如果 Wildfly 有,我不想实现连接池机制。

【问题讨论】:

  • 不,我想尝试一些新的东西。我使用 JPA 大约有两年时间。
  • 感谢您的回答@BalusC。我理解你的意见,但我正在寻找一个替代解决方案,而不是 JPA 与 Hibernate 或 EclipseLink 和 Querydsl 看起来很棒。这样我还是需要Hibernate和实体管理器。
  • 也许我错过了重点,我的老板也错过了。但是过去我们在使用 JPA 和 Hibernate 时遇到了很多问题(例如:难以阅读的查询、chaching 问题等)。

标签: jakarta-ee wildfly querydsl


【解决方案1】:

答案就在问题中。当ds.getConnection() 调用它时,它会从池中提供一个连接,因为它调用org.jboss.jca.core.connectionmanager.pool.AbstractPool#getConnection 方法。在bean 方法结束并且connection.close() 调用org.jboss.jca.core.connectionmanager.pool.AbstractPool#returnConnection 方法后将连接返回到池。所以connection.close() 没有关闭连接。调用connection.close() 很重要,因为连接永远不会返回到池中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 2014-01-09
    相关资源
    最近更新 更多