4

从 JTA 规范中,我了解到它仅适用于(或支持)分布式事务,用于调用线程。这是否意味着事务不能跨越多个线程?还是取决于实施?

是否有任何 JTA 实现支持跨线程的 XA?

谢谢!

4

2 回答 2

6

您可以在初始线程中使用 TransactionManager 的getTransaction()并在另一个线程中使用resume()将同一事务跨越多个线程,或者使用suspend() / resume()将事务移动到另一个线程。

是否支持此功能取决于特定的事务管理器实现。很有可能会支持这一点,因为当需要在多个 bean 之间传递相同的事务(可能在不同的工作管理器上运行)时需要这些特性,或者如果应用服务器需要跨多个 VM 跨越事务正在集群中运行(在这种情况下,您可能需要真正深入研究特定的事务管理器实现或让应用服务器完成其家庭工作)。

于 2012-09-25T08:48:53.883 回答
0

不,如果您使用 JTA 实现,则不能使用 getTransaction()。例外是:JTA EntityManager 不能使用 getTransaction()。

于 2015-03-03T10:07:41.757 回答