本地交易和BMT相同吗?
我们需要 transactionManager 来进行本地事务吗?
我读到 transactionManager 对于本地事务将无效。这是正确的吗?
JTA 是否为 CMT 和 BMT 提供了规定?
最佳答案
有关 BMT 或 CMT 的本地或全局事务处理没有区别。
BMT 和 CMT 仅定义如何定义事务的开始和结束。在 CMT 中,它是通过调用带注释的方法来定义的,在 BMT 中,事务的开始和结束是使用 UserTransaction 对象定义的。
如果全局事务是必要的,或者更好的是分布式事务,那么事务管理器将独立于 BMT 或 CMT 进行安排。
一旦涉及多个事务资源,这些全局事务或两阶段提交就变得必要。例如,如果您使用 MessageDriven bean,它调用注释为“Bean管理事务处理”的 bean 并在 DBMS 中进行更改。在这种情况下,将对消息队列和 DBMS 这两个资源完成两阶段提交。
那么,回答你的问题:
- 不,答案见上文。
- 如果没有事务管理器,您将无法使用多个资源进行事务处理。像 J2EE 容器通常那样提供分布式事务的容器将使用 Transactionmanager 处理所有事务。在 jboss 中,您可以将数据源配置为“无 jta”,在这种情况下,您可以显式地免除它们的两阶段提交,但我认为 jboss-transactionmanager 将处理此类数据源的数据库连接。
- 是的,如果“提供规定”的意思是“支持”
关于java - JTA 与本地事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52639429/