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。
|