为什么不从XAResource抛出XAException仍然允许事务提交成功?

时间:2011-01-23 00:40:29

标签: java transactions jta xa

我正在尝试一些与JOTM相关的事情,并且有一些关于事情如何运作的一般目的问题。我列出了事件的顺序,以便对发生的事情进行明确的总结。

  1. 创建tx
  2. 登记资源
  3. tx.commit
  4. resource.start
  5. resource.end抛出XA EXCEPTION
  6. resource.commit
  7. 即使resource.end抛出一个XAException,tx提交仍然会起作用,这对我来说似乎是完全错误的。如果没有将tx标记为回滚,那么抛出异常是什么意思......

    所有tx管理器都是这样工作还是抛出XAException失败tx?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

HTH。

谢谢, 尼丁