【问题标题】:Configuring transaction across multiple resources using spring framework?使用spring框架跨多个资源配置事务?
【发布时间】:2017-11-25 13:40:22
【问题描述】:

我理解跨越多个事务资源的事务称为全局事务。

问题 1: 这只是分布式事务的另一个名称还是有什么不同?

问题 2: 已经阅读了 Spring 关于事务管理的文档。 我可以从中推断出 一种。 JTA 纯粹是为分布式事务设计的。 湾。只有通过 EJB 和 EJB CMT,我们才能强制执行分布式事务。 C。如果是 EJB,那么它也需要一个 Application Server 和间接 JNDI。

Spring 促进全局/分布式事务的对应物是什么?

问题 3: 如果我们不想使用具有 JTA 功能的应用程序服务器, 我们应该使用 Atomikos / JOTM 之类的独立事务管理器来执行全局事务吗?

问题 4: 在单个事务下更新 DB_1 (MySql) 中的表 A 和 DB_2 (Oracle) 中的表 B 的简单用例: Spring 对这个用例的回答是什么?

【问题讨论】:

    标签: spring transactions distributed-transactions


    【解决方案1】:
    1. 是的
    2. a) 不,不是每个事务都会被分发,只有在涉及多个资源的情况下才会分发。 TM 负责管理在相关资源上执行的事务
    3. b) 不,有一些事务管理器可以在 ejb 服务器之外使用,如 atomikos、bitronix 等,但我不确定你所说的强制执行是什么意思,正如我之前写的那样,在必要时使用分布式事务。
    4. c) 是的
    5. d) Springs counterpart
    6. 如果您想同时在多个资源上使用事务,可以。
    7. 您以某种方式定义了两个数据源,它们让 TM 处理它们的资源。 MySql 和 Oracle 都提供 XA-Datasources 允许它处理分布式事务。您定义一个 TM 并可以使用事务属性注释您的 bean。有很多教程展示了如何做到这一点。

    补充说明:

    1. 同时事务也包含在 CDI 规范中。因此,您也可以使用 CDI。
    2. 明智地处理分布式事务。两种方式提交几乎不可能设置合理的事务超时。如果需要,有些开发站点仅在一个 SQL-DBMS-Resource 和一个 JMS-Resource 之间使用分布式事务。

    【讨论】:

    • 感谢 aschoerk 花费您的时间和精力来回答这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 2016-01-08
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2011-08-28
    • 2012-08-16
    相关资源
    最近更新 更多