JTA是否可以跨多个线程工作?

时间:2012-07-02 21:18:48

标签: transactions jta distributed-transactions xa atomikos

从JTA规范我明白它只为调用线程工作(或支持)分布式事务。这是否意味着不能跨多个线程跨越事务?或者它取决于实施?

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

谢谢!

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

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

相关问题