JTA 是事务服务的 J2EE 解决方案。本质上,它是描述事务接口(比如 UserTransaction 接口,开发人
员直接使用该接口或者通过 J2EE 容器使用该接口来确保业务逻辑能够可靠地运行)的 J2EE 模型的一部分
。JTA 具有的三个主要的接口分别是 UserTransaction 接口、TransactionManager 接口和 Transaction 接
口。这些接口共享公共的事务操作,例如 commit() 和 rollback(), 但是也包含特殊的事务操作,例如
suspend(),resume() 和 enlist(),它们只出现在特定的接口上,以便在实现中允许一定程度的访问控制。
例如,UserTransaction 能够执行事务划分和基本的事务操作,而 TransactionManager 能够执行上下文管
理。
http://www.it55.com/html/xueyuan/chengxukaifa/JAVAjiaocheng/20070719/102483_6.html
JTA UserTransaction与JTA TransactionManager比较
让我们来看一下Spring对JTA支持的细节。虽然并非经常需要考虑这个细节但了解相关的细节还有必要的。对简单的用例如前面章节的示例,标准的JtaTransactionManager定义已经足够了,
缺省的Spring JtaTransactionManager设置会从标准JNDI位置(J2EE规范所定义的java:comp/UserTransaction)获取 JTA的javax.transaction.UserTransaction对象。这对大部分标准J2EE环境来说已经足够了。
然而,缺省的JtaTransactionManager不能执行事务暂停(也就是说不支持PROPAGATION_REQUIRES_NEW和 PROPAGATION_NOT_SUPPORTED)。原因就在于标准的JTA UserTransaction接口不支持事务的暂停和恢复,而只支持开始和完成新的事务。
为了实现事务的暂停,需要一个javax.transaction.TransactionManager实例,他提供了JTA定义的标准的暂停和恢复方法。不幸的是,J2EE没有为JTA TransactionManager定义标准的JNDI位置!因此,我们需要使用厂商自己的定位机制。
清单6:
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManagerName">
<value>vendorSpecificJndiLocation</value>
</property>
</bean>
J2EE本质上没有考虑将JTA TransactionManager接口作为公共API的一部分。JTA规范自身定义了将TransactionManager接口作为容器集成的想法。虽然这是可以理解的,但是JTA TransactionManager的标准JNDI位置还是可以增加一定的价值,特别是对轻量级容器如Spring,这样任何J2EE服务器就可以用统一的方式来定位JTA TransactionManager了。
不仅Spring的JtaTransactionManager可以从访问中获益,O/R映射工具如Hibernate, Apache OJB, and Kodo JDO也能得到好处,因为他们需要在JTA环境中执行缓存同步的能力(释放缓存意味着JTA事务的完成)。这种注册事务同步的能力只有JTA TransactionManager接口才能提供,而UserTransaction是处理不了的。因此,这些工具都需要实现自己的 TransactionManager定位器。
为JTA TransactionManager定义标准的JNDI位置是许多底层软件供应商最期望J2EE实现的功能。如果J2EE5.0的规范制定团队能够认识到这个特性的重要性就太好了。幸运地是,高级J2EE服务器如WebLogic Server已经考虑将JTA TransactionManager作为公共的API包含在扩展功能中。
分享到:
相关推荐
SQLServer分布式事务服务器的配置.doc
专有云-全局事务服务GTS
社会事务服务支部述职报告 社会事务办述职报告.doc
2019年金融事务服务中心财政拨款收支总体情况表.doc.pdf
2019年浙江象山县机关事务服务中心选调试题及答案解析.docx
专利事务服务_专利申请相关.docx
Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务
阿里云 专有云企业版 V3.8.1 全局事务服务 用户指南 20190910
阿里云 专有云企业版 V3.8.1 全局事务服务 运维指南 20190910
阿里云 专有云企业版 V3.8.1 全局事务服务 产品简介 20190910
阿里云 专有云企业版 V3.8.1 全局事务服务 技术白皮书 20190910
阿里云 专有云企业版 V3.8.1 全局事务服务 安全白皮书 20190910
阿里云 专有云企业版 V3.8.2 全局事务服务 产品简介 20200417
阿里云 专有云企业版 V3.8.2 全局事务服务 技术白皮书 20200420
阿里云 专有云企业版 V3.8.2 全局事务服务 安全白皮书 20200417
阿里云 专有云企业版 V3.8.2 全局事务服务 用户指南 20200417
阿里云 专有云企业版 V3.8.2 全局事务服务 运维指南 20200417
阿里云 专有云企业版 V3.9.0 全局事务服务 GTS 技术白皮书 20191017
阿里云 专有云企业版 V3.9.0 全局事务服务 GTS 安全白皮书 20191017
阿里云 专有云企业版 V3.9.0 全局事务服务 GTS 用户指南 20191017