JTA知识
JTA主要用于分布式的多个数据源的两阶段提交的事务,而JDBC的Connection提供的单个数据源的事务; 后者因为只涉及到一个数据源,所以其事务可以由数据库自己单独实现, 而JTA事务因为其分布式和多数据源的特性, 不可能由任何"一个"数据源实现事务, 因此JTA中的事务是由"事务管理器"实现的,它会在多个数据源之间统筹事务,具体使用的技术就是所谓的"两阶段提交", 一般JTA事务都是用于EJB中(因为EJB本身也是分布式的), 所以一般的应用服务器都有自己的事务管理器用来管理JTA事务,注意这并不表示EJB容器有管理事务的功能; 事实上也有单独的事务管理器比如开源的Tyrex. 如果只用Tomcat做应用服务器的话是不能使用JTA事务的;
使用 JDBC 事务界定时,您可以将多个 SQL 语句结合到一个事务中。JDBC 事务的一个缺点是事务的范围局限于一个数据库连接。一个 JDBC 事务不能跨越多个数据库。在下面,我们将看一下如何用 JTA 进行事务界定。因为 JTA 不像 JDBC 那样有名,所以我们首先做一个简介。
JTA 简介
Java 事务 API(JTA) 及其同门兄弟 Java 事务服务(Java Transaction Service JTS)为 J2EE 平台提供了分布式事务服务。一个分布式的事务涉及一个事务管理器和一个或者多个资源管理器。一个资源管理器是任何类型的持久性的数据存储。事务管理器负责协调所有事务参与者之间的通信。事务管理器与资源管理器之间的关系如图 2 所示:
图 2. 一个事务管理器和资源管理器
JTA 事务比 JDBC 事务功能更强。JDBC 事务局限为一个数据库连接,而 JTA 事务可以有多个参与者。所有下列 Java 平台组件都可以参与 JTA 事务:
JDBC 连接
JDO PersistenceManager 对象
JMS 队列
JMS 主题
企业 JavaBeans
符合 J2EE 连接体系结构(J2EE Connector Architecture)规范的资源适配器
使用 JTA 的事务界定
要用 JTA 进行事务界定,应用程序要调用 javax.transaction.UserTransaction 接口中的方法。清单 4 显示了对 UserTransaction 对象的典型 JNDI 查询:
清单 4. 一个对 UserTransaction 对象的 JDNI 查询
import javax.transaction.*; import javax.naming.*; // ... InitialContext ctx = new InitialContext(); Object txObj = ctx.lookup("java:comp/UserTransaction"); UserTransaction utx = (UserTransaction) txObj;
当应用程序找到了 UserTransaction 对象后,就可以开始事务了,如清单 5 所示:
清单 5. 用 JTA 开始一个事务
utx.begin(); // ... DataSource ds = obtainXADataSource(); Connection conn = ds.getConnection(); pstmt = conn.prepareStatement("UPDATE MOVIES ..."); pstmt.setString(1, "Spinal Tap"); pstmt.executeUpdate(); // ... utx.commit(); // ...
当应用程序调用 commit()时,事务管理器用一个两阶段的提交协议结束事务。
控制事务的 JTA 方法
javax.transaction.UserTransaction 接口提供了以下事务控制方法:
public void begin()
public void commit()
public void rollback()
public int getStatus()
public void setRollbackOnly()
public void setTransactionTimeout(int)
应用程序调用 begin() 开始事务。应用程序调用 commit() 或者 rollback() 结束事务。参阅
http://www.ibm.com/developerworks/cn/java/j-dao/以了解更多关于用 JTA 进行事务管理的内容。
http://www.ibm.com/developerworks/cn/java/j-dao/
分享到:
相关推荐
**JTA与JDBC的结合使用**:在Java企业级应用中,JDBC通常与JTA结合使用,以实现分布式事务。JDBC连接可以在JTA事务管理下工作,这样在同一个事务中,即使涉及多个数据库操作,也能保证数据的一致性。例如,在Servlet...
在Java编程中,处理事务主要涉及JDBC(Java Database Connectivity)和JTA(Java Transaction API)。理解这些概念对于开发可靠的、高性能的数据库应用至关重要。 首先,让我们从事务的四大特性说起: 1. **原子性...
JDBC事务和JTA(XA)事务 JDBC事务和JTA(XA)事务是两种常见的数据库事务类型,它们都可以用来管理数据库事务,确保数据库的一致性和可靠性。 JDBC事务 JDBC事务是Java Database Connectivity(JDBC)的事务机制,它...
JTA事务通常与JNDI(Java Naming and Directory Interface)和XAResource接口一起工作,使得应用程序可以透明地访问和管理分布式事务。使用JTA事务时,开发者不再直接控制Connection的事务,而是由事务管理器(如...
7. **JDBC与JTA事务**:JDBC提供了一种在JTA环境中注册和管理事务的方法,通过`Connection#setAutoCommit(false)`禁用自动提交,并使用`UserTransaction`接口来开始、提交和回滚事务。 8. **Hibernate中的JTA支持**...
这个包涉及到JDBC与JTA(Java Transaction API)的集成,用于支持分布式事务处理。`XidImpl`类实现了JTA的全局事务标识符,`UserTransaction`接口则允许用户显式控制事务的开始、提交、回滚。这对于处理跨多个数据库...
- JTA事务管理:JTA的概念、与JDBC事务的区别、JTA的使用场景。 4. **JNDI与LDAP**: - JNDI服务:JNDI的基本概念、查找与绑定资源。 - LDAP目录服务:LDAP的特点、与JNDI的关系。 5. **RMI与EJB**: - RMI...
JDBC驱动程序对JTA的支持极大地增强了数据访问能力。 XA协议是数据库层面的一套分布式事务管理的规范,JTA是XA协议在Java中的实现,多个数据库或是消息厂商实现JTA接口,开发人员只需要调用SpringJTA接口即可实现JTA...
JDBC与JTA** JDBC是Java连接数据库的标准API,J2EE 1.4中的JDBC 3.0提供了更多功能和优化。JTA(Java Transaction API)用于管理跨越多个资源的事务,确保数据一致性。 **5. Web服务** J2EE 1.4支持SOAP 1.1和WSDL...
JDBC与JTA** JDBC(Java Database Connectivity)是Java访问数据库的标准接口,提供了连接、查询、更新数据库的能力。JTA(Java Transaction API)用于处理分布式事务,确保在多组件操作下的数据一致性。 **6. ...
6. **JTA与JDBC/Java Persistence API (JPA)**: 在JDBC连接上启用JTA事务,需要使用`javax.sql.DataSource.getConnection(UserTransaction, ConnectionProperties)`方法,或者在JPA中通过`@Transactional`注解声明...
Spring+iBatis+JOTM实现JTA事务: 如何处理跨库事物:spring + jtom 的jta事务是个很好的选择. 这个源码示例非常不错,包括所有的源码和jar包,下载后eclipse 或 myeclipse 导入就能用。 里面有详细的说明和注释,...
4. **JTA与JDBC/Java Persistence API (JPA)** - JTA通常与JDBC一起使用,为JDBC连接提供事务支持。 - 在Java EE环境中,JTA与JPA结合,允许在多层应用中进行分布式事务处理。 **JBarcode库** JBarcode是一个...
在描述中提到了`mysql-connector-java`,这意味着我们将使用MySQL数据库,并且其JDBC驱动支持JTA。 在实际操作中,一个简单的JTA示例可能如下: 1. 首先,通过`UserTransaction`开始一个事务。 2. 然后,获取到`XA...
确保JNDI名称与你的Tomcat或应用服务器中的配置匹配。 #### 1.5. 运行测试 编写测试类,利用Spring的`@Transactional`注解开启JTA事务,执行跨数据库的操作。测试类应确保在事务中进行所有操作,并在遇到错误时回滚...
它包括事务协调器、事务管理器以及对各种资源的适配器,如JDBC驱动、JMS供应商等,确保了在分布式环境中的一致性和可靠性。 在“springboot+jta+atomikos”项目中,Spring Boot作为基础框架,负责整体应用的结构和...
JOTM提供了与JTA兼容的接口,使得开发者可以利用JTA的功能,而无需使用重量级的应用服务器。它的优点在于性能优秀且易于集成到各种Java环境中。 接下来,我们将结合Spring框架来讨论如何配置和使用JTA和JOTM。...
【标题】"完整的jta例子 mysql测试"是一个关于Java Transaction API (JTA)与MySQL数据库集成的实践案例。JTA是Java平台企业版(Java EE)中的一个关键组件,用于管理分布式事务处理,确保在多资源操作中的数据一致性...
三、JTA与事务管理 JTA是Java EE的一部分,提供了统一的事务管理接口,可以跨多个数据源协调事务。在分布式环境中,JTA可以确保所有操作要么全部成功,要么全部回滚,从而保证数据的一致性。 四、MyEclipse环境下...
- 支持JTA (Java Transaction API),实现分布式事务处理。 - 支持Unicode,可以处理多种语言字符集的数据。 - 提供了SQL Server特有的函数和数据类型的支持,如XML类型、 Geography 和 Geometry 空间类型等。 此外...