2

我正在分析 JTA(Java 事务 API)和 .NET 对应的 System.Transactions 之间的不同行为:两者之间的方法完全不同。事实上,Java 版本的 Transactions 似乎更像是一种规范,让开发人员有义务实现定义的TransactionsTransactionManager其他接口。.NET 有一个更具体的实现,它不允许开发人员定义自己的Transaction对象,但提供接口来处理事务生命周期内管理的资源(而 Java 提供一些 XTA* 接口用于相同目的)

  • 我想知道是否有人有机会将一些使用 JTA 的 Java 代码移植到 .NET,他/她注意到了哪些主要差异。

  • 此外,谁能澄清我TransactionManager.setRollbackOnly反对TransactionManager.rollback(在JTA中)的行为?.NET 版本只有Transaction.Rollback更重要的方法。

4

1 回答 1

1

rollback() 向底层资源发送一个实际的回滚命令。setRollbackOnly() 在当前事务上放置一个标记,在决定是否提交或回滚时读取该标记。一旦调用了 setRollbackOnly(),唯一可能的结果就是回滚,但是当调用 setRollbackOnly() 时,实际上并没有进行回滚调用。

这就是这两种方法背后的想法。我不确定不同的实现在多大程度上做出了这种区分,即使 setRollbackOnly() 在调用时实际上会进行回滚,它也不会产生任何实际差异。

于 2009-05-03T22:33:22.120 回答