UML软件工程组织

EJB组件事务详解(1)
作者:苏洋 本文选自:赛迪网 2003年01月09日

 


JTA事务管理方式

Java事务API(Java Transaction API,JTA)用于为EJB组件提供与数据库管理器无关的事务组件管理方式。JTA作为Java事务服务(Java Transaction Service,JTS)的高层应用编程接口,使得在组件程序设计过程中可以利用JTA中的相应方法控制组件的事务范围以及事务管理方式。请读者看下面的代码:

public void doAnotherThing(){
UserTransaction ut = context.getUserTransaction();
try{
ut.begin();
demoBusinessMethod();
ut.commit();
}catch (Exception exp){
try{
ut.rollback();
}catch(SystemException exp1){
throw new EJBException("Rollback failed: " + exp1.getMessage());
}
throw new EJBException("Transaction failed: " + exp.getMessage());
}
}


在上面的代码中,读者首先看到用户事务接口对象UserTransaction。在该接口中定义了用于确定组件事务范围以及控制组件事务过程的begin、commit和rollback方法。在组件方法执行之前首先调用UserTransaction接口中的begin方法确定组件的事务过程开始,在组件商务方法执行过程中如果没有发生异常,则调用commit方法提交事务范围内方法的运行结果,否则调用rollback方法将方法运行结果回滚并抛出EJBException类型异常。


事务管理方式总结


对于不同类型的EJB组件,在组件开发和组装可以选择不同的组件事务管理方式。下表对不同类型EJB组件适用的事务管理方式进行了总结:


表1 组件类型与可选事务管理方式汇总表

组件类型 容器事务管理方式 组件事务管理方式
JDBC JTA
会话组件 Y Y Y
实体组件 Y N N
消息驱动组件 Y Y Y

从上表可以看出:除了实体组件不能采用JDBC和JTA事务管理方式外,其它任何事务管理方式均适用于所有类型的EJB组件。

到此,EJB系列讲座就算告一段落。在此系列讲座中,我们主要介绍了EJB的体系结构和EJB的会话组件、实体组件、消息驱动组件等组件的概念及简单应用。希望我们的EJB系列讲座能对您的实践应用有所帮助。以下是EJB系列讲座的全部内容:

EJB系列讲座 第一讲:分布式多层体系结构
第二讲:EJB基本结构解析
第三讲:EJB会话组件分析
第四讲:如何定义无状态会话类型EJB组件
第五讲:创建有状态会话类型EJB组件
第六讲:EJB的实体组件
第七讲:组件管理持久性EJB组件详解
第八讲:容器管理持久性EJB组件
第九讲:消息驱动组件分析
第十讲:EJB组件事务详解




您对此次系列讲座的内容安排有什么意见,可以在下面留言或把您的意见通过E-mail发送到:huangxf@staff.ccidnet.com。

 



版权所有:UML软件工程组织