【问题标题】:Wildfly - can persistence.xml have a direct jdbc connection?Wildfly - persistence.xml 可以直接连接 jdbc 吗?
【发布时间】:2015-02-08 03:17:34
【问题描述】:

或者wildfly会一直寻找<jta-data-source>

何时/何地是使用javax.persistence.jdbc.* 属性配置数据库访问的正确位置?

【问题讨论】:

    标签: hibernate jakarta-ee wildfly


    【解决方案1】:

    像 WildFly 这样的企业应用程序服务器专门使用 JTA,因为这是 Java EE 事务管理标准对它们的要求。

    资源本地事务用于手动 JDBC 连接处理,AS 的目的是让它代表您管理资源。

    因此,您不应在 WildFly 或任何其他 AS 中使用资源本地事务。您需要使用容器已经为您提供的 JTA DataSource。

    【讨论】:

    • “资源本地事务用于手动 JDBC 连接处理”似乎不是正确的说法。资源本地事务意味着只有单一资源(数据库)。在大多数情况下,您只有一个事务性资源,但这并不意味着必须手动处理 jdbc 连接。例如,您可以使用第三方连接池(如 tomcat jdbc 池或 c3po)。您也可以拥有单一资源的 JTA 数据源。事务管理器对不需要 2 阶段提交的单个资源进行优化。
    • 如果不通过 java.sql.Connection.commit() 和 java.sql.Connection.rollback(),您认为如何管理事务?这就是它绑定到单个连接的原因,因为您或您依赖的其他框架必须调用这些方法来设置事务边界。对于 JTA,它是正在使用的 XAConnection。
    • 你是对的,但我想说的是,JTA 是一种 API,当有多个资源并且其中一个是 XA 资源时,XA 就会出现。您可以将 JTA 与单个资源(资源本地)一起使用。
    • 是的,你是对的。本地资源适用于一个 DataSource,而 JTA 至少适用于一个。
    • 理论上,如果我在做集成测试,我可以在 Wildfly Web 容器中使用非 JTA 数据源吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2017-08-16
    • 2021-01-10
    • 2015-05-16
    相关资源
    最近更新 更多