`
duyangsss
  • 浏览: 124418 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

EJB事务管理服务

    博客分类:
  • ejb
 
阅读更多

最有用的容器服务可能就是事务管理服务,当应用出现失败或异常时,它保证了数据库的完整性。你可以简单地将为一个POJO 方法申明它的事务属性。这样容器就可以在合适的上下文中运行这个方法。最常见的事务是定义在session bean 的方法上,方法中所有的数据库操作只有在方法正常退出时才会提交,如果方法抛出未捕获的异常,事务管理将回滚所有的变更。

 

一个事务的属性控制了事务的使用范围。比如method-A开始一个事务然后调用Bean-2中的method-B。它运行在method-A开始的事务中还是重新执行一个新的事务?结果要看method-B中的事务属性。

 

经过验证表明当抛出一个继承自RutimeException的自定义异常时EJB容器会自动回滚该事务。抛出普通的继承自Exception的应用程序异常容器不回自动回滚该事务。

 

可以看出TransactionAttribute既可以为类做注释,又可以为方法做注释。@TransactionAttribute 注释用作定义一个需要事务的方法。它可以有以下参数:

 

1.REQUIRED:如果客户端正运行在某个EJB事务中运行,且调用了EJB中的方法,则该方法在客户端的EJB事务中运行。如果客户端没有与某个EJB事务相关联,则容器在运行方法前先启动一个新EJB事务。Required属性适合绝大多数EJB事务,建议把它设置成默认的,至少在开发阶段。EJB事务属性是声明式的,后期也可以很容易的修改。如果没有指定参数,@TransactionAttribute 注释使用REQUIRED 作为默认参数。

 

2.REQUIRESNEW:方法将在一个新的事务中执行,如果调用的方法已经在一个事务中,则暂停旧的事务。在调用结束后恢复旧的事务。如果客户端没有与某个EJB事务相关联,则容器在运行方法前先启动一个新EJB事务。如果确保方法始终在一个新EJB事务中运行,应该使用EJB事物属性中的RequiresNew属性。

 

3.MANDATORY:如果运行于事务中的客户调用了该方法,方法在客户的事务中执行。如果客户没有关联到事务中,容器就会抛出TransactionRequiredException。如果EJB中的方法必须使用客户端的EJB事务,则应该使用EJB事物属性中的 Mandatory属性。

 

4.NOT_SUPPORTED:如果方法在一个事务中被调用,容器会在调用之前中止该事务。在调用结束后,容器会恢复客户事务。如果客户没有关联到一个事务中,容器不会在运行入该方法前启动一个新的事务。用NotSupported 属性标识不需要事务的方法。因为事务会带来更高的性能支出,所以这个属性可以提高性能。

 

5.SUPPORTS:如果客户端运行在某个EJB事务中且调用了EJB中的方法,则该方法运行在客户端的EJB事务中。如果客户端没有与某个EJB事务关联,则容器运行方法前不启动新的EJB事务。

 

6.Never:如果客户端运行在某个EJB事务中且调用了EJB中的方法,则容器抛出RemoteException异常。如果客户端没有与某个EJB事务关联,则容器运行方法之前不启动新的EJB事务。

 

 

事务属性          客户端事务  容器事务 


REQUIRED             有         加入 
                             无         有  

 

REQUIRES_NEW   有          新建 

                             无          新建  


SUPPORTS            有          加入
                             无         无   


 MANDATORY         有          加入
                             无          异常   


 NOT_SUPPORTED 有          无 
                             无          无   


 NEVER                  有          异常 
                              无          无   

转自:http://blog.csdn.net/zq9017197/article/details/6334106

 

分享到:
评论

相关推荐

    EJB 3.0从入门到精通

    内容依次包含了Java EE概述、EJB基础、搭建EJB环境、会话bean、持久化实体、持久化实体管理器、对象关系映射、JPQL查询、消息驱动bean、事务、提高EJB 3.0性能、从Web层访问EJB 3和EJB安全、EJB和Web服务及EJB表现层...

    ejb3.0培训教程与源码(绝对精品)

    2, EJB容器可以为我们提供中间件服务; 3, EJB客户端:(常见的) 1) 独立的java程序 2)web程序 3)其他的EJB, 4)其他通过Web Service 调用的客户端; 4, EJB容器可以为我们提供的服务: 1) 事务:够用 2)安全:不够...

    Java中各种事务管理技术的总结

    内容包括事务及其控制的基本概念,Oracle中的事务处理,以及JDBC,EJB,JTA事务管理内容的总结,最后还介绍了事务管理的技巧,是了解和学习JAVA事务处理不可多得的第一手资料!

    EJB中的JTA与JTS例子代码

    JTS则规定了支持JTA的事务管理器的实现规范,在高层API之下实现了OMG Object Transaction Service(OTS) 1.1规范的Java映射。JTS使用Internet Inter-ORB Protocol(IIOP)来传播事务。本例子将介绍JTA与JTS在具体应用中...

    Weblogic EJB 学习笔记

    Weblogic EJB 学习笔记 ejb 基础知识 EJB 组成 EJB 配置描述器 建立ejb 档案文件 容器管理的事务 ejb 引用

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    4.4 EJB的事务管理 201 4.4.1 容器管理事务(CMT) 201 4.4.2 Bean管理事务(BMT) 201 4.5 事务超时设置 201 4.6 本章小结 203 第5章 JNDI和远程方法调用 204 5.1 JNDI的概念 205 5.1.1 命名服务 205 5.1.2 目录服务 ...

    名片管理(EJB3.0)

    使用EJB3.0开发的,支持分布式管理和事务控制,想学EJB3.0的朋友可以下载下来看看,很有帮助

    EJB3开发指南《EJB.3.Developer.Guide》

    EJB3开发指南英文版《EJB.3.Developer.Guide》 ...第六章:管理实体 第七章:事务 第八章:发送消息Messaging 第九章:EJB Timer Serivce 第十章:Intercepters 第十一章:实现EJB3的WebSerivce 第十二章:EJB3安全

    EJB3.0实录教程+配套源码

    2, EJB容器可以为我们提供中间件服务; 3, EJB客户端:(常见的) 1) 独立的java程序 2)web程序 3)其他的EJB, 4)其他通过Web Service 调用的客户端; 4, EJB容器可以为我们提供的服务: 1) 事务:够用 2)安全:不够...

    11.事务——为服务器端增加JTA事务管理功能

    Java Web即Java EE,它是面向企业级的网络系统,其中的“企业级”和“网络”...在Java EE最新的规范中提供了进行企业级开发的框架组件EJB,并同时提供了多种分布式服务开发技术方案,以及多种企业应用的业务解决方案。

    Wicket6.7_Spring3.2_Hibernate4.2_EJB全注解实例

    Wicket6.7 Spring3.2 Hibernate4.2 EJB全注解实例.采用JTA事务管理,配置ehcache为二级缓存,在glassfish3.2.2和postgresql9测试通过。参考网上的资料整理。

    EJBContainer:EJB 容器的个人实现

    每个事务都与打开它的线程的标识符相关联,以保证事务管理器的线程安全操作。 使用@PersistenceContext 注释的实体管理器注入。 然后,管理器使用事务管理器来检索当前事务并在那里执行其操作。 管理 EJB 初始化...

    Java EJB JTA JTS用法示例源代码.rar

    JTS则规定了支持JTA的事务管理器的实现规范,在高层API之下实现了OMG Object Transaction Service(OTS) 1.1规范的Java映射。JTS使用Internet Inter-ORB Protocol(IIOP)来传播事务。  本源码包中的例子将介绍JTA与...

    oracle-mysql 两阶段提交例子(ejb3)

    ejb3事务分容器管理事务(CMT)和Bean管理事务(BMT),这里讲述了CMT情况下,两阶段提交例子(tow-phase commit),展示ejb容器为我们做的事情,其实就是ejb容器提供商,已经帮开发者解决了的问题。数据库分别是oracle...

    ejb的详细介绍

    5. 分布式事务 6. 动态重部署 7. 无损关机(服务器停掉的时候保证没有客户) 8. 登陆和授权 9. 系统管理(当软件有问题时能够及时的维护) 10. 线程 11. 面向消息的中间件(异步的交互方式) 12. 对象的生命周期管理 13. ...

    Java编程语言中EJB技术的详细说明

    Enterprise JavaBean (EJB) 1.1 规范定义了开发和部署基于事务性、分布式对象应用程序的服务器端软件组件的体系结构。企业组织可以构建它们自己的组件,或从第三方供应商购买组件。这些服务器端组件称作 Enterprise ...

    基于TCC机制的分布式事务管理器源代码

    ByteTCC是一个基于TCC(Try/Confirm/Cancel)机制的分布式事务管理器。兼容JTA,可以很好的与EJB、Spring等容器(本文档下文说明中将以Spring容器为例)进行集成。

    EJB详解 sessionbean entitybean MDB

    主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务

    Spring_aop源码

    Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器...Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中

    Java事务设计策略.

    事务管理应该被包含在开始该事务的方法中. 因此,应该只让那些开启了新事务的方法去调用setRollbackOnly(). 如果一个方法需要一个事务环境但不负责对事务进行回滚的话,该方法应该使用Mandatory事务属性. X/Open XA...

Global site tag (gtag.js) - Google Analytics