为什么从 XAResource 抛出 XAException 仍然不允许事务提交成功?
我正在尝试使用 JOTM 进行一些操作,并且有一些关于其工作原理的一般性问题。我列出了事件的顺序,以便对所发生的事情有一个明确的总结。
- 错误
- 。
- 的
- 似乎
- 是
- 完全
即使resource.end抛出XAException,tx提交仍然会起作用,这对我来说 如果没有将 tx 标记为已回滚,那么抛出异常有什么意义...
所有 tx 管理器都像这样工作还是抛出 XAException 会使 tx 失败?
I am trying out a few things w/ JOTM and have some general purpose questions regarding how things work. I have listed the sequence of events to get a definitive summary of what happens.
- create tx
- enlist resource
- tx.commit
- resource.start
- resource.end throws XA EXCEPTION
- resource.commit
Even if the resource.end throws a XAException the tx commit will still work which seems plain wrong to me. Whats the point of throwing an exception if it doesnt mark the tx as rolled back ...
Do all tx managers work like this or does throwing an XAException fail the tx ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
TM 行为不仅取决于 XAException 是否存在,还取决于 XAException 错误代码。从末尾抛出的任何(符合规范的)XA_RB* 代码都应该导致回滚。
TM behaviour depends not just on the existence of an XAException but on the XAException error code. Any of the (spec compliant) XA_RB∗ codes thrown from end should cause a rollback.
根据我对 XA 的理解,在准备过程中抛出的所有类型的 XAException 都必须导致 XA 事务的回滚。
HTH。
谢谢,
镍丁
In my understanding of XA, ALL kinds of XAExceptions thrown during prepare MUST lead to rollback of the XA transaction.
HTH.
Thanks,
Nitin