fbpx
维基百科

Java事务API

Java事务APIJava Transaction API,简称JTA ) 是一个Java企业版应用程序接口,在Java环境中,允许完成跨越多个XA资源的分布式事务。JTA是在Java社区过程下制定的规范,编号JSR 907。JTA提供:

  • 划分事务边界
  • X/Open XA API允许资源参与到事务中。

X/Open XA体系结构

在X/Open XA的体系结构中,事务管理器或事务处理监控器 (TP monitor)协调 资源跨越多个资源,如数据库和消息队列的事务。每一个资源都有自己的管理器。资源管理器通常拥有自己的用于操纵资源的API,例如关系型数据库使用的JDBC。 此外,资源适配器允许事务管理器协调该资源管理器和其他资源管理器之间的分布式事务。最后,与事务管理器通讯的应用程序开始,提交,或回滚事务。应用程序同样需要使用资源自己的API与不同的资源通讯,修改资源。

JTA对X/Open XA体系结构的实现

JTA API包括两个Java包下的类:

  • javax.transaction
  • javax.transaction.xa

JTA是以X/Open XA体系结构为基础设计的,但他定义了两种不同的事务边界划分的API。应用服务器,如EJB服务器,与应用组件区别对待。JTA提供了一个接口,javax.transaction.TransactionManager,这是供应用服务器自己进行开始,提交或回滚事务使用悳,同时还提供了另外一个接口javax.transaction.UserTransaction,这是供一般客户代码,如Java Servlet或是EJB管理事务使用的。

为了通过事务管理器管理,JTA架构要求每一个资源管理器必须实现javax.transaction.xa.XAResource接口,如前面所述,每一个资源会有一个自己的特定的API,例如:

  • 关系型数据库使用JDBC
  • 消息服务使用JMS
  • 一般的企业信息系统(EIS)的资源使用J2EE连接器架构

Java事务API

Java事务API由三个部分组成:

  • UserTransaction - 高层的应用事务划分接口,供客户程序使用
  • TransactionManager - 高层的事务管理器接口,供应用服务器使用
  • XAResource,X/Open XA协议的标准Java映射,供事务性资源管理器使用。

UserTransaction接口

javax.transaction.UserTransaction接口给应用程序提供了编程控制事务边界的能力。该接口可以供Java客户端程序或EJB使用。

UserTransaction的begin方法开始一个全局事务,并将该事务与调用线程关联。事务到线程的管理是由事务管理器完成的,对应用程序透明的。

对嵌套事务的支持不是必须的。如果调用线程的上下文已经与事务关联,并且事务管理器的实现并不支持嵌套的事务,UserTransaction的begin方法调用时将抛出NotSupportedException。

底层的事务管理器的实现负责提供不同应用程序间事务上下文的传播,事务管理器位于客户端和服务器计算机上。 传播的事务上下文的格式由客户端和服务器计算机协商确定。例如,如果事务管理器是JTS规范的实现,将使用CORBA OTS 1.1规范中描述的事务上下文传播格式。事务上下文的传播对于应用程序来说是透明的。

EJB服务器对UserTransaction的支持

EJB服务器需要支持UserTransaction接口,以供Bean管理事务的EJB使用。通过EJBContext的getUserTransaction方法,EJB构件可以获取到UserTransaction接口。这样,EJB应用程序不需要与事务管理器直接交互,就可以划分事务边界。取而代之的是EJB依赖于EJB服务器提供EJB规范中定义的所有事务处理。(EJB服务器和事务管理器之间的交互对于应用是透明。实现事务管理的责任是在EJB容器和服务的提供商。[1]

下面的例子说明了Bean管理事务的会话Bean如何使用UserTransaction:

// 在会话Bean的setSessionContext方法中, // 将Bean的上下文存放到一个实例变量中 this.ctx = sessionContext; // 在Bean业务逻辑中 UserTransaction utx = ctx.getUserTransaction(); // 开始一个事务 utx.begin(); // 做一些事情 // 提交 utx.commit(); 

从JNDI获取UserTransaction

如果环境中安装了JTA的实现,应可以从java:comp/UserTransaction获取UserTransaction。

Java标准版对UserTransaction的支持

要使用JTA或UserTransaction提供的功能,应用服务器并不是必需的。[2] 现存在独立的JTA实现,这样,在普通的Java应用程序中都可以利用JTA/XA带来的可靠性。特别是在与类似Spring工具一同使用的时候,这为开发可靠的Java应用程序提供了不同的范式。

开源的JTA实现

到2010年4月为止,JTA的开源实现有:

以上所有事务管理器可以在J2SE环境中使用。

参见

参考文献

  1. ^ JSR 220: Enterprise JavaBeans,Version 3.0, EJB 3.0 Expert Group, Sun Microsystems, 2006[永久失效連結]
  2. ^ J2EE Without the Application Server, Guy Pardon, O'Reilly Media, 2006. [2010-04-07]. (原始内容于2018-05-05). 

外部链接

  • JTA specifications (页面存档备份,存于互联网档案馆
  • Atomikos open source JTA implementation - for JTA in J2SE (页面存档备份,存于互联网档案馆

java事务api, java, transaction, 简称jta, 是一个java企业版, 的应用程序接口, 在java环境中, 允许完成跨越多个xa资源的分布式事务, jta是在java社区过程下制定的规范, 编号jsr, jta提供, 划分事务边界, open, api允许资源参与到事务中, 目录, open, xa体系结构, jta对x, open, xa体系结构的实现, usertransaction接口, ejb服务器对usertransaction的支持, 从jndi获取usertransacti. Java事务API Java Transaction API 简称JTA 是一个Java企业版 的应用程序接口 在Java环境中 允许完成跨越多个XA资源的分布式事务 JTA是在Java社区过程下制定的规范 编号JSR 907 JTA提供 划分事务边界 X Open XA API允许资源参与到事务中 目录 1 X Open XA体系结构 2 JTA对X Open XA体系结构的实现 3 Java事务API 3 1 UserTransaction接口 4 EJB服务器对UserTransaction的支持 5 从JNDI获取UserTransaction 6 Java标准版对UserTransaction的支持 7 开源的JTA实现 8 参见 9 参考文献 10 外部链接X Open XA体系结构 编辑在X Open XA的体系结构中 事务管理器或事务处理监控器 TP monitor 协调 资源跨越多个资源 如数据库和消息队列的事务 每一个资源都有自己的管理器 资源管理器通常拥有自己的用于操纵资源的API 例如关系型数据库使用的JDBC 此外 资源适配器允许事务管理器协调该资源管理器和其他资源管理器之间的分布式事务 最后 与事务管理器通讯的应用程序开始 提交 或回滚事务 应用程序同样需要使用资源自己的API与不同的资源通讯 修改资源 JTA对X Open XA体系结构的实现 编辑JTA API包括两个Java包下的类 javax transaction javax transaction xaJTA是以X Open XA体系结构为基础设计的 但他定义了两种不同的事务边界划分的API 应用服务器 如EJB服务器 与应用组件区别对待 JTA提供了一个接口 javax transaction TransactionManager 这是供应用服务器自己进行开始 提交或回滚事务使用悳 同时还提供了另外一个接口javax transaction UserTransaction 这是供一般客户代码 如Java Servlet或是EJB管理事务使用的 为了通过事务管理器管理 JTA架构要求每一个资源管理器必须实现javax transaction xa XAResource接口 如前面所述 每一个资源会有一个自己的特定的API 例如 关系型数据库使用JDBC 消息服务使用JMS 一般的企业信息系统 EIS 的资源使用J2EE连接器架构 Java事务API 编辑Java事务API由三个部分组成 UserTransaction 高层的应用事务划分接口 供客户程序使用 TransactionManager 高层的事务管理器接口 供应用服务器使用 XAResource X Open XA协议的标准Java映射 供事务性资源管理器使用 UserTransaction接口 编辑 javax transaction UserTransaction接口给应用程序提供了编程控制事务边界的能力 该接口可以供Java客户端程序或EJB使用 UserTransaction的begin方法开始一个全局事务 并将该事务与调用线程关联 事务到线程的管理是由事务管理器完成的 对应用程序透明的 对嵌套事务的支持不是必须的 如果调用线程的上下文已经与事务关联 并且事务管理器的实现并不支持嵌套的事务 UserTransaction的begin方法调用时将抛出NotSupportedException 底层的事务管理器的实现负责提供不同应用程序间事务上下文的传播 事务管理器位于客户端和服务器计算机上 传播的事务上下文的格式由客户端和服务器计算机协商确定 例如 如果事务管理器是JTS规范的实现 将使用CORBA OTS 1 1规范中描述的事务上下文传播格式 事务上下文的传播对于应用程序来说是透明的 EJB服务器对UserTransaction的支持 编辑 EJB服务器需要支持UserTransaction接口 以供Bean管理事务的EJB使用 通过EJBContext的getUserTransaction方法 EJB构件可以获取到UserTransaction接口 这样 EJB应用程序不需要与事务管理器直接交互 就可以划分事务边界 取而代之的是EJB依赖于EJB服务器提供EJB规范中定义的所有事务处理 EJB服务器和事务管理器之间的交互对于应用是透明 实现事务管理的责任是在EJB容器和服务的提供商 1 下面的例子说明了Bean管理事务的会话Bean如何使用UserTransaction 在会话Bean的setSessionContext方法中 将Bean的上下文存放到一个实例变量中 this ctx sessionContext 在Bean业务逻辑中 UserTransaction utx ctx getUserTransaction 开始一个事务 utx begin 做一些事情 提交 utx commit 从JNDI获取UserTransaction 编辑如果环境中安装了JTA的实现 应可以从java comp UserTransaction获取UserTransaction Java标准版对UserTransaction的支持 编辑要使用JTA或UserTransaction提供的功能 应用服务器并不是必需的 2 现存在独立的JTA实现 这样 在普通的Java应用程序中都可以利用JTA XA带来的可靠性 特别是在与类似Spring工具一同使用的时候 这为开发可靠的Java应用程序提供了不同的范式 开源的JTA实现 编辑到2010年4月为止 JTA的开源实现有 Bittronix Transaction Manager Atomikos Transactions Essentials 页面存档备份 存于互联网档案馆 JBossTM 页面存档备份 存于互联网档案馆 以前称作Arjuna 以上所有事务管理器可以在J2SE环境中使用 参见 编辑Java事务服务参考文献 编辑 JSR 220 Enterprise JavaBeans Version 3 0 EJB 3 0 Expert Group Sun Microsystems 2006 永久失效連結 J2EE Without the Application Server Guy Pardon O Reilly Media 2006 2010 04 07 原始内容存档于2018 05 05 外部链接 编辑JTA specifications 页面存档备份 存于互联网档案馆 JSR 907 Atomikos open source JTA implementation for JTA in J2SE 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title Java事务API amp oldid 70952003, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。