首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JTA与本地事务

JTA与本地事务
EN

Stack Overflow用户
提问于 2018-10-04 05:12:28
回答 2查看 379关注 0票数 0
  1. 本地事务和BMT是否相同?
  2. 本地事务需要transactionManager吗? 我看到transactionManager对本地事务无效。是这样吗?
  3. JTA对CMT和BMT都做了规定?
EN

回答 2

Stack Overflow用户

发布于 2018-10-22 21:40:38

有关BMT或CMT的本地或全局事务处理没有差别。

BMT和CMT只定义如何定义事务的开始和结束。在CMT中,它是由带注释的方法的调用定义的,在BMT中,事务的开始和结束是使用UserTransaction-对象定义的。

如果一个全局事务是必需的,或者更好的是一个分布式事务,那么Transactionmanager将安排它,独立于BMT或CMT。

一旦涉及多个事务资源,这些全局事务或两个阶段提交就变得必要。例如,如果您使用一个MessageDriven bean,它调用一个注释为“”的bean,并在DBMS中进行更改。在这种情况下,将对消息队列和DBMS这两个资源执行两阶段提交。

所以,回答你的问题:

  1. 不,回答见上文。
  2. 没有事务管理器,就不能使用多个资源进行事务处理。像J2EE容器一样提供分布式事务的容器将使用Transactionmanager处理所有事务。在jboss,您可以将数据源配置为"no“--在这种情况下,可以明确地豁免它们不受两阶段提交,但是我认为将处理这样一个数据源的db-连接。
  3. 是的,如果你所说的“给付”是指“支持”
票数 2
EN

Stack Overflow用户

发布于 2018-10-04 05:33:09

以下是你问题的几个要点。

  1. 全局事务支持可用于Web和企业bean J2EE组件,并有一些限制,适用于应用程序客户端组件。 企业bean组件可以细分为两类:使用容器管理事务的bean (CMT)和使用bean管理事务的bean (BMT)。 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。
  2. 如果应用程序使用两个或多个资源,则需要外部事务管理器来协调对全局事务中所有资源管理器的更新。 了解更多信息。关于事务管理器Guide/files/TxnManagers-WhatIs.html
  3. BMT企业bean、应用程序客户端组件和Web组件可以使用Java (JTA) UserTransaction接口来定义全局事务的界限。要获得UserTransaction接口,可以使用java:comp/UserTransaction的(JNDI)查找,或者使用来自SessionContext对象的getUserTransaction方法。 UserTransaction接口不适用于 CMT 企业beans.If企业bean试图获取此接口,则会根据企业JavaBeans (EJB)规范抛出异常。 Web或enterprise (、CMT或BMT)可以通过查找java:comp/websphere/ExtendedJTATransaction获得ExtendedJTATransaction接口。该接口提供了对事务标识的访问和接收事务完成通知的机制。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52639429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档