Board logo

标题: 事务服务浅析(第二部分) [打印本页]

作者: look_wt    时间: 2018-10-15 19:06     标题: 事务服务浅析(第二部分)

第II部分 J2EE中的事务服务简介Java        TM2 Platform, Enterprise Edition(J2EE)简化了分布式事务管理应用程序的编写。J2EE包括了两套规范,用来支持分布式的事务,一种是Java Transaction API(JTA),另一种是Java Transaction Service(JTS)。JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务。JTS则规定了支持JTA的事务管理器的实现规范,在高层API之下实现了OMG Object Transaction Service(OTS) 1.1规范的Java映射。JTS使用Internet Inter-ORB Protocol(IIOP)来传播事务。作为J2EE平台实现的一部分,SUN实现了一个支持JTS的事务管理器,同时还实现了JTA。      
JTA和JTS让J2EE应用服务器完成事务管理,这样就使得组件开发人员摆脱了事务管理的负担。开发者只需在部署描述符中声明事务管理属性,便可以使得EJB组件参与到事务之中,由应用服务器来负责事务的管理。
J2EE事务服务的层次关系企业级Java中间件的分布式事务服务包括五层:事务管理器(Transaction Manager)、应用服务器(Application Server)、资源管理器(Resource Manager)、应用程序(Application Program)和通信资源管理器(Communication Resource Manager)。每一层都通过实现一组事务API和相关机制参与到分布式事务处理系统中。
从事务管理器的角度出发,事务服务的具体实现是不需要暴露出来的,只需要定义高层接口,使得事务服务的用户可以驱动事务界限、资源获取、事务同步和事务恢复过程。JTA的目的是定义事务管理器所要求的本地Java接口,从而在企业级分布计算环境中支持事务管理。下图中的小半圆代表JTA规范。
JTS中规定的事务管理器的实现本节从事务管理器实现者的角度描述了实现方面的要求。如下图,事务管理器必须实现JTA接口,用于支持应用服务器和资源管理器。不要求实现对JDBC 1.0 Driver和非JTA资源管理器支持。也不要求实现对各种CORBA应用实体的支持,如事务客户端(Transactional Client)、事务服务器(Transactional Server)和恢复服务器(Recoverable Server)。
Java Transaction APIJava Transaction API由三部分组成:高层的应用事务划分接口(供事务客户使用)、高层的事务管理器接口(供应用服务器使用)和X/Open XA协议的标准Java映射(供事务性资源管理器使用)。
4.1 UserTransaction接口
Javax.transaction.UserTransaction接口使得应用程序能够编程控制事务边界。这个接口可以由Java客户端程序或者EJB来使用。
4.1.1在EJB Server中的UserTransaction支持
EJB中对事务的管理有两种类型:
4.1.2 事务客户端中的UserTransaction支持
Java客户端程序需要首先通过JNDI来获得UserTransaction对象的引用,然后使用该对象的方法完成事务的开始、提交或者回滚。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
java.util.Properties env = …
Context ctx = new InitialContext(env);
Javax.transaction.UserTransaction userTran =
(javax.transaction.UserTransaction)ctx.lookup("javax.transaction.UserTransaction");
userTran.commit()
try
{
    userTran.commit();
}
catch(Exception e)
{
    userTran.rollBack();
    throw new Exception("……");
}




4.2        TransactionManager接口
应用服务器使用javax.transaction.TransactionManager接口来代表受控的应用程序控制事务的边界。例如,EJB容器为事务性EJB组件管理事务状态。
4.3        Transaction接口
使用Transaction接口可以执行与目标对象相关联的事务操作。
4.4        XAResource接口
Javax.transaction.xa.XAResource接口是基于X/Open CAE规范(分布式事务处理:XA规范)工业标准XA接口的Java映射。XAResource接口定义了分布式事务处理环境(DTP)中资源管理器和事务管理器之间是如何交互的。资源管理器的资源适配器实现了XAResource接口,将事务同事务资源联系起来,类似关系数据库的一个连接。
4.5        Xid接口
Javax.transaction.xa.Xid接口是X/Open事务标识符XID结构的Java映射。这个接口由事务管理器和资源管理器来使用,对于应用程序和应用服务器而言这个接口是不可见的。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0