前面关于活动系统的数据一致性,是用事务来完成的。

但是现在都是大数据,因此都会存在跨库的事务。所以对这个进行了一些了解,做下整理。

 

J2EE规范

ØJDBC

Ø……

ØJTA

ü JTA定义了一种标准API,应用系统由此可以访问各种事务监控。

ØJTS

 

üCORBA OTS事务监控的基本实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java Transaction API(JTA)规范.JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。

JTA介绍

   在 J2EE 应用中,事务是一个不可或缺的组件模型,它保证了用户操作的 ACID(即原子、一致、隔离、持久)属性。对于只操作单一数据源的应用,可以通过本地资源接口实现事务管理;对于跨数据源(例如多个数据库,或者数据库与 JMS)的大型应用,则必须使用全局事务 JTA (Java Transaction API)。JTA 为 J2EE 平台提供了分布式事务服务,它隔离了事务与底层的资源,实现了透明的事务管理方式

 

JTA架构图

java实现跨数据库查询 java跨库事务_分布式事务

 

JTA例子

UserTransactionuserTx = null;
Try{
// 启动事务 userTx.begin();
Sql操作
// 提交事务 userTx.commit();
}catch(){
  // 发生异常,回滚事务userTx.rollback();
 
}

 

JTA框架

面向开发人员的使用接口(事务管理器)           

面向服务提供商的实现接口(资源管理器)

 

JTA开发人员接口

Øbegin()- 开始一个分布式事务

Øcommit()- 提交事务

Ørollback()- 回滚事务

 

ØgetStatus()- 返回关联到当前线程的分布式事务的setRollbackOnly()- 标识关联到当前线程的分布式事务将被回滚

 

JTA面向提供商

TransactionManager 和 Transaction 两个对象

 

JTA实现类图

java实现跨数据库查询 java跨库事务_跨库事务_02

 

分布事务的提交

•1、预交阶段

 

•2、并向所有投“提交”票的子事务发失败命令,否则向它们发提交命令

JTA参考文档

•http://www.ibm.com/developerworks/cn/java/j-lo-jta/

•http://wenku.baidu.com/link?url=5Eyb6gaZ5DzcjBDi817UdxA5lq4oAmZO0BxPIh8O2pG1DAH3lwhvfT5nd_KpQlvu61iB9DOFS-sysBcEpXzAUWU4YfMWNyavFCu8xdnON9K