发布于 2018-10-22 21:40:38
有关BMT或CMT的本地或全局事务处理没有差别。
BMT和CMT只定义如何定义事务的开始和结束。在CMT中,它是由带注释的方法的调用定义的,在BMT中,事务的开始和结束是使用UserTransaction-对象定义的。
如果一个全局事务是必需的,或者更好的是一个分布式事务,那么Transactionmanager将安排它,独立于BMT或CMT。
一旦涉及多个事务资源,这些全局事务或两个阶段提交就变得必要。例如,如果您使用一个MessageDriven bean,它调用一个注释为“”的bean,并在DBMS中进行更改。在这种情况下,将对消息队列和DBMS这两个资源执行两阶段提交。
所以,回答你的问题:
发布于 2018-10-04 05:33:09
以下是你问题的几个要点。
local transaction containment (LTC)用于在未指定的事务上下文中定义应用程序服务器行为。LTC是一个有界的工作单元范围,可以在其中访问零、一个或多个资源管理器本地事务(RMLT)。LTC定义了所有RMLT必须完成的边界;根据策略,任何不完整的RMLT都由容器解决。LTC是bean实例的本地对象;即使这些bean是由同一个容器管理的,它也不会在bean之间共享。LTC是由容器在没有全局事务上下文的情况下在J2EE组件(例如企业bean或servlet)上调度方法之前启动的。LTC是由容器根据应用程序配置的LTC边界完成的,例如,在方法分派的末尾。LTC支持没有编程接口;LTC完全由容器管理,并由应用程序部署人员通过应用程序部署描述符中的事务属性进行配置。
本地事务包含不能与全局事务同时存在。如果应用程序组件分派发生在没有全局事务的情况下,容器总是在J2EE 1.3或更高版本上为J2EE组件建立LTC。java:comp/websphere/ExtendedJTATransaction获得ExtendedJTATransaction接口。该接口提供了对事务标识的访问和接收事务完成通知的机制。https://stackoverflow.com/questions/52639429
复制相似问题