使用spring框架跨多个资源配置事务?

时间:2017-11-25 13:40:23

标签: spring transactions distributed-transactions

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

问题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对这个用例的回答是什么?

1 个答案:

答案 0 :(得分:0)

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

    1. 同时交易也包含在CDI-Spec中。所以你也可以使用CDI。
    2. 明智地处理分布式事务。双向提交几乎不可能设置合理的事务超时。有一些开发站点,如果需要,只在一个SQL-DBMS-Resource和一个JMS-Resource之间使用分布式事务。