【问题标题】:Why doesnt throwing an XAException from a XAResource still allow an transaction commit to succeed?为什么从 XAResource 抛出 XAException 仍然不允许事务提交成功?
【发布时间】:2011-01-23 00:40:28
【问题描述】:

我正在使用 JOTM 尝试一些事情,并且对事情的工作方式有一些通用的问题。我列出了事件的顺序,以便对所发生的事情有一个明确的总结。

  1. 创建交易
  2. 获取资源
  3. tx.commit
  4. resource.start
  5. resource.end 抛出 XA 异常
  6. resource.commit

即使 resource.end 抛出 XAException , tx 提交仍然可以工作,这对我来说似乎是完全错误的。如果它没有将 tx 标记为回滚,那么抛出异常有什么意义......

是否所有的 tx 管理器都这样工作,还是抛出 XAException 会使 tx 失败?

【问题讨论】:

    标签: java transactions jta xa


    【解决方案1】:

    TM 行为不仅取决于 XAException 的存在,还取决于 XAException 错误代码。从末尾抛出的任何(符合规范的)XA_RB∗ 代码都应该导致回滚。

    【讨论】:

      【解决方案2】:

      在我对 XA 的理解中,在准备期间抛出的各种 XAExceptions 都必须导致 XA 事务的回滚。

      HTH。

      谢谢, 尼丁

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-12
        • 2010-12-18
        • 1970-01-01
        相关资源
        最近更新 更多