最近和莉莉一起准备,一起研究各种技术和方法,可是一种学无止境的感觉不时地冒出来,让人觉得,个人的水平提高简直是一件遥遥无期的事情,学的越多,不懂的越多,确实心烦不已。技术、框架、API,各种名词越看越多,越看越头大,没有在实际工作中用到的技术,都有点纸上谈兵的感觉。但是话又说回来,也只能去多接触,多看多想多实践,才能增加知识面,触类旁通。也许当时看的很迷茫,总觉得是学到了皮毛,根本没有领会其内涵,但是在时间不够充足的情况下,也只能这样,这就好比博览群书,不求甚解,至少为自己当前的开发工作提供更多的思路,也在之后遇到需要用这种技术的地方的时候,不至于手足无措。
回到正题,JTA,关于它的简介百度谷歌写了一堆,大体意思是:Java事务API(JTA:Java Transaction API)和它的同胞Java事务服务(JTS:Java Transaction Service),为J2EE平台提供了分布式事务服务(distributed transaction)。一个分布式事务(distributed transaction)包括一个事务管理器(transaction manager)和一个或多个资源管理器(resource manager)。一个资源管理器(resource manager)是任意类型的持久化数据存储。事务管理器(transaction manager)承担着所有事务参与单元者的相互通讯的责任。
这概念看着就头晕,明确一点就是,首先JTA是一个分布式的事务服务。关于事务,之前的数据库概论之类的书籍里面已经讲了很多了,事务是恢复和并发控制的基本单位,事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。在实际开发中,操作事务的方法无非就是通过begin 来起动事务,通过commit提交已完成的事务,通过rollback来对出现异常的事务进行回滚操作。各种事务系统都大同小异,JTA也是不例外的。但是,与众不同的是,JTA提供了分布式的事务服务,就是分布式这几个字,将它和其他事务系统区别开来。
如何理解JTA的分布式呢?我认为,在目前的J2EE系统中,为了达到数据库系统灾备、跨数据库共享数据等目的,一个系统可能会有多个数据库连接。对某个含有数据库操作的事务,也就有可能包括了对多个数据库同时进行更新的需求。这些需求在一般的事务系统中,仅仅对操作单个数据库进行了事务处理,保证其有效可靠。但是如果某次数据增删改操作,对一个数据库起效果了,而对其他的数据库没有起效,那么就会导致各个数据库直接的数据不同步问题。如果使用了JTA这样的分布式事务操作,那么结果就是,要么对所有有关系的数据库全部更新,要么就全部不更新。保证整个系统的数据一致。
JTA与JDBC或者其他需要运用到事务的组件的关系(摘自百度百科):
JTA事务比JDBC事务更强大。一个JTA事务可以有多个参与者,而一个JDBC事务则被限定在一个单一的数据库连接。这与我上面所述的意思类似,这样举一反三的思考,下列任一个Java平台的组件都可以参与到一个JTA事务中:JDBC连接、JDO PersistenceManager 对象、JMS 队列、JMS 主题、企业JavaBeans(EJB)、一个用J2EE Connector Architecture 规范编译的资源分配器等等。这些组件都有自己的事务处理机制,但若是需要分布式事务服务的时候,就需要引入JTA的支持。
JTA管理事务需要注意的(摘自51cto http://book.51cto.com/art/200806/76686.htm)
(这个是在EJB JPA数据库持久层开发中提到的,但是我认为也能够进行推广)
JTA事务(Java Transaction API)是J2EE规范中有关事务的标准。它是容器级别的事务,只能运行在J2EE服务器中。它的最大优势是可以支持分布式的事务,如果系统采用的是分布式的数据库,那么只能选择JTA管理EntityManager事务。使用JTA管理EntityManager事务时,需要注意以下几个问题。
1、JTA事务只能运行在J2EE的环境中,即EJB容器中和Web容器中;而在J2SE环境中只能使用RESOURCE_LOCAL管理事务。
2、容器托管的EntityManager对象只能采用JTA的事务,而不能采用RESOURCE_LOCAL事务。
JTA的事务和RESOURCE_LOCAL事务的区别(摘自 http://book.51cto.com/art/200806/76687.htm)
(这个是在EJB JPA数据库持久层开发中提到的)
RESOURCE_LOCAL事务数据库本地的事务。它是数据库级别的事务,只能针对一种数据库,不支持分布式的事务。对于中小型的应用,可以采用RESOURCE_LOCAL管理EntityManager事务。
学习参考资料:
1、JTA 深度历险 - 原理与实现 http://www.ibm.com/developerworks/cn/java/j-lo-jta/
--IBM的人写的,感觉通俗易懂,通过简单的代码讲解了JTA的实现原理
2、关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究
http://blog.csdn.net/bluishglc/article/details/7612811
---讲解分布式事务的纯理论了。XA是由X/Open组织提出的分布式事务的规范。JTA是基于XA架构上建模的。使用了两阶段提交的原理。
3、mysql使用JTA实例 http://make19830723.iteye.com/blog/839017
--通过main方法去验证JTA的例子,我没有去验证这个代码是否准确,但看起来是脱离了J2EE容器去使用JTA的具体例子,这个很奇怪,有环境的时候再去验证一下。
相关推荐
在Spring框架中,通过其事务管理模块,将JDBC、JTA、JPA等不同的事务API进行了统一抽象,提供了简单易用的编程模型。开发者可以使用Spring的声明式事务管理,无需深入理解底层细节,就能方便地控制事务的边界。 JTA...
javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。 javax.xml 根据 XML 规范定义核心 XML 常量和功能。 ...
本文的目的是要提供一个关于的Java事务处理API(JTA)的高级的概述,以及与分布式事务相关的内容。一个事务处理定义了一个工作逻辑单元,要么彻底成功要么不产生任何结果。 一个分布式事务处理只是一个在两个或更多...
Java JTA,全称为Java Transaction API,是Java平台上的事务处理标准,用于管理跨系统或跨资源的事务。它提供了一种统一的方式来控制应用程序中的事务,使得开发者可以在不同的数据库、消息队列等资源之间进行协调,...
JTA(XA)事务是Java Transaction API(JTA)的事务机制,它可以管理分布式事务,涉及多个资源管理器和事务管理器。JTA事务可以将多个资源管理器组合成一个事务,以确保分布式事务的一致性和可靠性。 使用JTA事务...
的Java Transaction API (JTA) 是一个重要的规范文档,它定义了事务管理器与分布式事务系统中的各方(应用程序、资源管理器以及应用服务器)之间的高级接口。此文档不仅限于接口规范的定义,还提供了组件化企业应用...
Spring框架在企业级Java应用中广泛用于实现事务管理,而JTA(Java Transaction API)是Java平台上的标准事务处理API,适用于分布式环境。本篇文章将深入探讨如何在Spring中配置JTA事务管理,以实现跨数据库和资源的...
Java 事务 API(Java Transaction API,简称 JTA)是 Java 平台标准版(Java EE)的一部分,用于处理分布式事务处理。JTA 提供了一种统一的接口,使得应用程序可以在不同的事务管理器和资源管理器之间进行切换,而...
JTA(Java Transaction API)是Java平台标准的一部分,用于管理跨越多个数据存储或服务的事务。本文将深入探讨如何使用JTA来实现跨库事务,确保数据的一致性和完整性。 首先,我们需要理解JTA的核心概念。JTA提供了...
6. **JTA(Java Transaction API)**:用于管理分布式事务,确保数据的一致性和完整性。 7. **JMS(Java Message Service)**:提供了异步通信的机制,允许应用程序通过消息传递进行解耦。 8. **JSF(JavaServer ...
Spring支持JTA(Java Transaction API),这是一个Java标准,用于定义应用程序与事务管理器之间的接口,使得在分布式环境中进行事务处理变得可能。 JOTM(Java Open Transaction Manager)是Java世界中的一个开源...
JTA(Java Transaction API) 为 J2EE 平台提供了分布式事务服务。 要用 JTA 进行事务界定,应用程序要调用 javax.transaction.UserTransaction 接口中的方法。
本项目“springboot+jta+atomikos”旨在利用Spring Boot框架、Java Transaction API (JTA) 和 Atomikos 这一开源事务管理器来实现分布式事务的统一管理。下面将详细阐述这三个关键组件以及它们如何协同工作。 **...
在Java中,实现分布式事务的方法有很多,例如使用JTA(Java Transaction API)或者Spring框架的声明式事务管理。 1. **JTA(Java Transaction API)**:这是Java平台的标准API,用于管理全局事务,可以跨越多个资源...
### Java事务处理总结 #### 一、什么是Java事务 事务是指一组操作的集合,这些操作要么全部成功,要么全部失败,以确保数据的一致性和完整性。在Java开发中,事务处理主要关注的是如何管理和控制对数据库的操作,...
Java EE API包含了用于数据库连接(JDBC)、服务器端组件(Servlet、JSP)、事务管理(JTA)、邮件服务(JavaMail)、EJB(Enterprise JavaBeans)、XML处理(JAXP)等多个领域的组件和接口。 1. **Servlet**:...
JTA(Java Transaction API)是Java平台标准的事务API,它提供了一个更为高级的事务管理模型,适用于分布式事务场景。JTA支持多数据源、消息队列等多种资源的事务协调。JTA的核心接口包括: - `UserTransaction`:...
Java中的事务管理是确保数据一致性的重要机制,主要分为三种类型:JDBC事务、JTA(Java Transaction API)事务以及容器事务。本文将重点探讨JDBC事务和JTA分布式事务的区别和应用场景。 首先,JDBC事务是基于数据库...
6. **Java Transaction API (JTA)**:`javax.transaction`包处理分布式事务,确保数据的一致性。 在前端和后台开发中,Java API也扮演着重要角色。例如,`javax.swing`和`java.awt`包提供了图形用户界面(GUI)组件...
在Java中,我们可以使用JDBC的Connection对象的commit()和rollback()方法来手动管理事务,或者利用Java Transaction API (JTA)的UserTransaction接口进行声明式事务管理。在Spring框架中,可以使用@Transactional...