首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

J2EE技术规范(5)——JTA(理解JTA,编写简单的事务客户程序)

2012-12-18 
J2EE技术规范(五)——JTA(理解JTA,编写简单的事务客户程序)之前的内容中,写了几篇关于J2EE规范的博客,现在继

J2EE技术规范(五)——JTA(理解JTA,编写简单的事务客户程序)

之前的内容中,写了几篇关于J2EE规范的博客,现在继续来完善这些内容,这次内容主要补充上一篇博客。

WebLogic Server使用JTA1.0.1a实现和管理事务

WebLogic Server提供以下支持:创建唯一的事务标记符(XID)支持可选的事务名称跟踪事务涉及的对象通知事务的数据库使用XA改写2PC执行回滚在失败时执行自动的恢复过程管理超时

处理事务的步骤:

J2EE技术规范(5)——JTA(理解JTA,编写简单的事务客户程序)

事务的范围:

事务能够横跨:EJB访问JDBC连接JMS连接

J2EE技术规范(5)——JTA(理解JTA,编写简单的事务客户程序)

事务中的EJB和JDBC的示例

事务能够横跨EJB方法调用和JDBC连接的混合方式:

...Context tc=new InitialContext();UserTransaction ut=(UserTransaction)ic.lookup("javax.transaction.UserTransaction");MyEJBHome ejbhome=(MyEJBHome)ic.lookup("java:com/env/ejb/MyEJBHome");MyEJB ejb=ejbHome.create();DataSource ds=(DataSource)ic.lookup("java:com.env/jdbc/myDB");connection con=ds.getConnection();Statement stmt=con.createStatement();ut.begin();ejb.methodA();ejb.methodB();stmt.executeQuery(...);stmt.executeUpdate(...);

事务中的异常

Servlets必须意识到异常和它们在事务方面的实现

事务中涉及的EJBs可能抛出以下异常:Application exceptions(应用异常)——如果EJB将事务标记为回滚,那么客户程序只能回滚。如果没有标记回滚,那么客户程序可以提交或回滚。系统或非应用异常——事务被标记为回滚。客户程序只能回滚

一、在事务中涉及的JMS操作可能抛出JMSException

(1)在事务中涉及的JDBC操作可能抛出SQLException

(2)在这两种情况中,客户程序都可以提交或回滚。

捕获异常和回滚的示例

(1)遇到失败事件时,事务可以执行适当的清理操作:

...Context ic=new InitialContext();UserTransaction ut=(UserTransaction)ic.lookup("javax.transaction.UserTransaction");ut.begin();withdraw(fromAccount,amount);Deposit(toAccount,amount);Ut.commit();}catch(CustomException e){System.out.println(e);try{ut.rollback();}catch(SystemException se){System.out.println(e);}catch(Exception e){System.out.println(e);}}

JTA的内容就先讲到这里,我们接下来的博客会继续完善J2EE规范的其他博客。

热点排行