`
lance2002
  • 浏览: 7405 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java事务API,JTA的个人理解

 
阅读更多

    最近和莉莉一起准备,一起研究各种技术和方法,可是一种学无止境的感觉不时地冒出来,让人觉得,个人的水平提高简直是一件遥遥无期的事情,学的越多,不懂的越多,确实心烦不已。技术、框架、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的具体例子,这个很奇怪,有环境的时候再去验证一下。

 

     

 

分享到:
评论

相关推荐

    Java Transaction API (JTA) Version 1.3 JSR-907

    在Spring框架中,通过其事务管理模块,将JDBC、JTA、JPA等不同的事务API进行了统一抽象,提供了简单易用的编程模型。开发者可以使用Spring的声明式事务管理,无需深入理解底层细节,就能方便地控制事务的边界。 JTA...

    JAVA_API1.6文档(中文)

    javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。 javax.xml 根据 XML 规范定义核心 XML 常量和功能。 ...

    Java Transaction API概述

    本文的目的是要提供一个关于的Java事务处理API(JTA)的高级的概述,以及与分布式事务相关的内容。一个事务处理定义了一个工作逻辑单元,要么彻底成功要么不产生任何结果。 一个分布式事务处理只是一个在两个或更多...

    java实现JTA简单例子

    Java JTA,全称为Java Transaction API,是Java平台上的事务处理标准,用于管理跨系统或跨资源的事务。它提供了一种统一的方式来控制应用程序中的事务,使得开发者可以在不同的数据库、消息队列等资源之间进行协调,...

    JDBC事务和JTA(XA)事务

    JTA(XA)事务是Java Transaction API(JTA)的事务机制,它可以管理分布式事务,涉及多个资源管理器和事务管理器。JTA事务可以将多个资源管理器组合成一个事务,以确保分布式事务的一致性和可靠性。 使用JTA事务...

    Sun Microsystems Inc. Java Transaction API (JTA)

    的Java Transaction API (JTA) 是一个重要的规范文档,它定义了事务管理器与分布式事务系统中的各方(应用程序、资源管理器以及应用服务器)之间的高级接口。此文档不仅限于接口规范的定义,还提供了组件化企业应用...

    Spring配置JTA事务管理

    Spring框架在企业级Java应用中广泛用于实现事务管理,而JTA(Java Transaction API)是Java平台上的标准事务处理API,适用于分布式环境。本篇文章将深入探讨如何在Spring中配置JTA事务管理,以实现跨数据库和资源的...

    JTA-Locking:Java 事务 API (JTA) 锁定技术

    Java 事务 API(Java Transaction API,简称 JTA)是 Java 平台标准版(Java EE)的一部分,用于处理分布式事务处理。JTA 提供了一种统一的接口,使得应用程序可以在不同的事务管理器和资源管理器之间进行切换,而...

    使用JTA实现跨库事务

    JTA(Java Transaction API)是Java平台标准的一部分,用于管理跨越多个数据存储或服务的事务。本文将深入探讨如何使用JTA来实现跨库事务,确保数据的一致性和完整性。 首先,我们需要理解JTA的核心概念。JTA提供了...

    java ee api

    6. **JTA(Java Transaction API)**:用于管理分布式事务,确保数据的一致性和完整性。 7. **JMS(Java Message Service)**:提供了异步通信的机制,允许应用程序通过消息传递进行解耦。 8. **JSF(JavaServer ...

    spring+jotm+ibatis+mysql实现JTA分布式事务

    Spring支持JTA(Java Transaction API),这是一个Java标准,用于定义应用程序与事务管理器之间的接口,使得在分布式环境中进行事务处理变得可能。 JOTM(Java Open Transaction Manager)是Java世界中的一个开源...

    事务处理:JTA事务

    JTA(Java Transaction API) 为 J2EE 平台提供了分布式事务服务。  要用 JTA 进行事务界定,应用程序要调用 javax.transaction.UserTransaction 接口中的方法。

    springboot+jta+atomikos

    本项目“springboot+jta+atomikos”旨在利用Spring Boot框架、Java Transaction API (JTA) 和 Atomikos 这一开源事务管理器来实现分布式事务的统一管理。下面将详细阐述这三个关键组件以及它们如何协同工作。 **...

    java分布式事务demo

    在Java中,实现分布式事务的方法有很多,例如使用JTA(Java Transaction API)或者Spring框架的声明式事务管理。 1. **JTA(Java Transaction API)**:这是Java平台的标准API,用于管理全局事务,可以跨越多个资源...

    Java事务处理总结

    ### Java事务处理总结 #### 一、什么是Java事务 事务是指一组操作的集合,这些操作要么全部成功,要么全部失败,以确保数据的一致性和完整性。在Java开发中,事务处理主要关注的是如何管理和控制对数据库的操作,...

    java ee api中文版

    Java EE API包含了用于数据库连接(JDBC)、服务器端组件(Servlet、JSP)、事务管理(JTA)、邮件服务(JavaMail)、EJB(Enterprise JavaBeans)、XML处理(JAXP)等多个领域的组件和接口。 1. **Servlet**:...

    java事务处理总结

    JTA(Java Transaction API)是Java平台标准的事务API,它提供了一个更为高级的事务管理模型,适用于分布式事务场景。JTA支持多数据源、消息队列等多种资源的事务协调。JTA的核心接口包括: - `UserTransaction`:...

    Java中JDBC事务与JTA分布式事务总结与区别

    Java中的事务管理是确保数据一致性的重要机制,主要分为三种类型:JDBC事务、JTA(Java Transaction API)事务以及容器事务。本文将重点探讨JDBC事务和JTA分布式事务的区别和应用场景。 首先,JDBC事务是基于数据库...

    JAVA-API 全部资源

    6. **Java Transaction API (JTA)**:`javax.transaction`包处理分布式事务,确保数据的一致性。 在前端和后台开发中,Java API也扮演着重要角色。例如,`javax.swing`和`java.awt`包提供了图形用户界面(GUI)组件...

    JAVA事务配置总结

    在Java中,我们可以使用JDBC的Connection对象的commit()和rollback()方法来手动管理事务,或者利用Java Transaction API (JTA)的UserTransaction接口进行声明式事务管理。在Spring框架中,可以使用@Transactional...

Global site tag (gtag.js) - Google Analytics