-->

编程BMT - 的UserTransaction(Programming BMT - UserTr

2019-10-31 13:37发布

基于BMT的完整的编程UserTransaction接口上? 换句话说,如果我想使用BMT,就是那里,当我需要比UserTransaction接口提供的更多服务的任何情况。

为什么提出此问题呢? 如果我使用一个不同的实现事务管理器(如Bitronix TM或Atomikos公司),而不是默认的容器提供,它只是足够注入新的TM到UserTransaction对象?

-谢谢

Answer 1:

这是真的仅限于哪些应用服务器本身将使; 也就是说,如果它明确支持更换事务管理。

真正的艺术事务管理是容器经由与包裹皆称事务资源(数据源的连接,JMS会话,JPA EntityManagers等)与所述事务管理器的同步对象,并通过任一与当前事务注册它们事务或TransactionSynchronizationRegistry

容器实现Synchronization对象的事务管理器实现了TransactionTransactionSynchronizationRegistry对象。 两者之间的协调是在事务运行时,你有什么实际的管理。

BMT和CMT只是替代的方式来告诉容器启动/停止交易。 在某些方面,术语“Bean管理”是假的UserTransaction每一个兼容的应用服务器将由容器来实现,因此它仍然是容器做的工作。 除了“容器管理的”有些误导,因为它仍然是bean开发人员在决定交易时启动/停止,它只是做了声明VS编程。 这些功能最准确的描述是通过编程管理事务和声明式事务管理中。 在所有的情况下,它仍然是bean与容器和容器和事务管理器做所有的工作谈话。

所有这一切说,它仍然有可能为你改变的事务管理器,OpenEJB的和TomEE支持它,但是它不会在您尝试的方式工作。 请与您的厂商,看看这是可能的。



Answer 2:

也许不完全回答你的问题,但如果使用BMT你也允许使用本地资源事务管理。 在这种情况下,你不会使用(注射)​​UserTransaction接口。

请注意,这是唯一合法的,如果没有交易是在通过上述UserTransaction接口开始取得进展。



文章来源: Programming BMT - UserTransaction