事务管理之JTA事务
来源:互联网 发布:华鑫证券交易软件 编辑:程序博客网 时间:2024/05/16 05:48
什么是JTA?
JTA全称Java Transaction API ,即Java事务API,英文解释:
Java Transaction API (JTA) specifies standard Java interfaces between a transaction manager and the parties involved in a distributed transaction system: the resource manager, the application server, and the transactional applications.
JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务。
JTA允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据,这些数据可以分布在多个数据库上。JDBC驱动程序的JTA支持极大地增强了数据访问能力。
JTA的主要接口:
位于javax.transaction包中
a、UserTransaction接口:让应用程序得以控制事务的开始、挂起、提交、回滚等。由Java客户端程序或EJB调用。
b、TransactionManager 接口:用于应用服务器管理事务状态
c、Transaction接口:用于执行相关事务操作
d、XAResource接口:用于在分布式事务环境下,协调事务管理器和资源管理器的工作
e、Xid接口:为事务标识符的Java映射
注:前3个接口位于Java EE版的类库 javaee.jar 中,Java SE中没有提供!UserTransaction是编程常用的接口。JTA只提供了接口,没有具体的实现。
JTA需要满足的条件:
如果使用 JTA 界定事务,那么就需要有一个实现 javax.sql.XADataSource 、 javax.sql.XAConnection 和 javax.sql.XAResource 接口的 JDBC 驱动程序。一个实现了这些接口的驱动程序才可以参与 JTA 事务。
一个 XADataSource 对象就是一个 XAConnection 对象的工厂。 XAConnection 是参与 JTA 事务的 JDBC 连接。要使用JTA事务,必须使用XADataSource来产生数据库连接,产生的连接为一个XA连接。
XA连接(javax.sql.XAConnection)和非XA(java.sql.Connection)连接的区别在于:
XA可以参与JTA的事务,而且不支持像JDBC那样的自动提交。
同时,应用程序一定不要对 XA 连接调用 java.sql.Connection.commit() 或者 java.sql.Connection.rollback() 。相反,应用程序应该使用 UserTransaction.begin()、 UserTransaction.commit() 和 serTransaction.rollback() 。
注意: Oracle, Sybase, DB2, SQL Server等大型数据库才支持XA, 支持分布事务。 MySQL属于Non-XA。
JTA编程的基本步骤
a、首先配置JTA ,建立相应的数据源
b、建立事务:通过创建UserTransaction类的实例来开始一个事务。代码如下:
Context ctx = new InitialContext(p) ;
UserTransaction trans = (UserTransaction) ctx.lookup("javax. Transaction.UserTransaction")
c、开始事务:代码为 trans.begin() ;
d、找出数据源:从Weblogic Server上找到数据源,代码如下:
DataSource ds = (DataSource) ctx.lookup(“mysqldb") ;
e、建立数据库连接:Connection mycon = ds.getConnection() ;
f、执行SQL操作:stmt.executeUpdate(sqlS);
g、完成事务:trans.commit(); / trans.rollback();
h、关闭连接:mycon.close() ;
- 事务管理之JTA事务
- JTA 事务管理
- JTA 事务管理
- 事务管理之JDBC事务
- 事务管理之分布式事务
- JAVA 事务之JDBC事务、JTA事务和容器事务
- JTA事务
- JTA事务
- Spring全局事务之JTA+Atomikos
- 分布式事务JTA之实践:Spring+ATOMIKOS
- 分布式事务JTA之实践:Spring+ATOMIKOS
- Spring全局事务之JTA+Atomikos
- 分布式事务JTA之实践:Spring+ATOMIKOS
- 分布式事务JTA 实现之 JOTM
- 分布式事务操作之Spring+JTA+mybatis
- 分布式事务操作之Spring+JTA
- 分布式事务操作之Spring+JTA+mybatis
- 分布式事务JTA实现之:SSM+ATOMIKOS
- Python机器学习及实践——简介篇2
- xutils3 的 LogUtil使用
- Java:jdbc数据库连接出现中文乱码问题
- 25循环结构编程练习
- 【逆元】hdu 5685 Problem A
- 事务管理之JTA事务
- 瑞士轮(noip2011普及组第三题)
- VMware vSphere Web Services SDK编程指南(五)- 5.3 客户端应用(使用用户名和密码凭证建立一个会话)
- java+Swing打包成exe可安装文件(可在无jdk环境机器上运行)
- node.js安装与启动
- Windows系统安装Mysql前运行库依赖
- Java 9 揭秘(18. Streams API 更新)
- 欢迎使用CSDN-markdown编辑器
- ThreadPoolExecutor 源码剖析之