最有用的容器服务可能就是事务管理服务,当应用出现失败或异常时,它保证了数据库的完整性。你可以简单地将为一个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的事务管理是Java EE中实现可靠服务的关键部分,它允许开发者专注于业务逻辑,而不必过于关注事务的细节。通过EJB容器提供的事务服务,开发者可以更高效地构建可伸缩且可靠的分布式应用程序。
总之,EJB的事务属性是Java EE平台为企业级应用提供的重要特性之一,它简化了事务管理,使开发人员能够专注于核心业务逻辑,而不必担心底层的事务控制细节。通过合理配置这些属性,可以显著提高应用程序的性能、可靠...
EJB3.0中,事务管理分为容器管理的事务(CMT, Container-Managed Transactions)和 bean 管理的事务(BMT, Bean-Managed Transactions)。CMT是默认模式,由容器自动管理事务的开始、提交、回滚,开发者只需关注...
4. **容器管理的事务**:EJB3支持自动事务管理,可以通过`@TransactionAttribute`来定义事务的传播行为和隔离级别。 **JBoss AS7 (现为WildFly)** 是一个开源的应用服务器,它是EJB3规范的一个实现,提供了运行和...
**EJB实体Bean与事务管理** 企业级JavaBean(Enterprise JavaBeans,简称EJB)是Java平台上的一个核心组件,用于构建可部署在服务器端的分布式应用程序。在EJB规范中,实体Bean(Entity Bean)是一种特殊类型的组件...
在实际部署过程中,可能还需要考虑其他的配置项,例如安全性、事务管理、资源池等,以确保EJB服务的稳定性和性能。 总的来说,通过Tuxedo调用Weblogic的EJB服务是一项复杂的集成任务,需要对Weblogic和Tuxedo的架构...
2. **容器**:管理和执行EJB组件,提供诸如事务管理、安全性、持久化和生命周期管理等服务。 3. **EJB组件**:封装业务逻辑,可以是会话Bean或实体Bean。 **EJB开发人员的角色分配** 1. **Business Logic ...
通过深入理解EJB的特性、生命周期和事务管理机制,开发者可以更好地设计和构建高性能、高可用性的企业级应用。同时,对比JavaBean,EJB在分布式环境下的优势明显,是构建大型、复杂系统的优选技术方案。
在J2EE 1.3中,实体Bean的事务管理主要依赖于容器提供的服务。容器负责启动和结束事务,确保事务的一致性和隔离性。实体Bean可以通过声明式或编程式的方式来控制事务边界。 1. 声明式事务管理:通过在Bean的部署...
1. **事务管理**:EJB支持ACID事务,确保数据的一致性和完整性。 2. **安全性**:EJB提供内置的安全模型,可以限制对特定资源的访问,确保只有授权的用户和bean才能进行操作。 3. **可扩展性**:EJB可以在多服务器...
EJB容器在运行时提供了多种服务,如安全性、事务管理、生命周期管理以及资源管理等。以下将详细探讨EJB容器对bean的管理机制。 **实例池化** 实例池是EJB容器管理bean资源的一种策略,它类似于数据库连接池。通过...
4. **简化事务管理**:EJB3.0提供了一种更简单的事务管理方式,通过注解如`@TransactionAttribute`来控制事务的属性和行为。 5. **查询语言**:EJB3.0引入了JPQL(Java Persistence Query Language),这是一种面向...
- 事务管理是EJB的关键特性,WebLogic支持声明式和编程式事务控制,可配置不同的事务隔离级别和回滚规则。 7. **EJB的持久性和状态管理** - 对于Entity Beans,WebLogic Server提供了容器管理的持久性(CMP)和...
**EJB(Enterprise ...综上所述,EJB_TEST是一个帮助学习者理解和实践EJB技术的示例项目,涵盖了EJB的基本概念、组件类型、生命周期、部署、通信、事务管理和安全性等方面,是深入理解Java企业级开发的宝贵资源。
总的来说,这个图书管理系统展示了如何利用Struts和EJB3.0构建一个实际的MIS系统,同时也涵盖了Java Web开发的多个重要方面,如MVC架构、持久化、事务管理和服务整合。对于学习和理解Java EE开发技术,以及提升实际...
2. **Spring AOP与ejb事务管理**:Spring的声明式事务管理可以与ejb的事务管理相结合,提供更细粒度的事务控制。 3. **Spring与ejb的协作**:在某些场景下,会话bean可能只负责协调工作,而具体的业务逻辑由Spring...
- **事务管理**:EJB容器提供了强大的事务支持,包括容器管理事务(CMT)和Bean管理事务(BMT),使得开发者无需关注底层事务细节。 - **安全性**:EJB容器还提供了安全性支持,如认证和授权机制,保护应用不受未授权...
- **1.1.5 EJB容器提供者(EJB Container Provider)**:提供容器服务,这是EJB组件运行的环境,负责管理EJB组件的生命周期、提供服务如事务管理和持久化,并确保组件间的通信。 - **1.1.6 系统管理员(System ...
- **Maven或Gradle**:构建工具可以帮助管理和构建项目,包括EJB和Web服务的打包和部署。 综上所述,EJB 3.0与WebService的结合,使得企业级应用的开发更为高效和灵活。通过注解驱动和JAX-WS,可以轻松地创建和...
2. 代理模式:在Web服务客户端和EJB之间提供一个代理,处理调用的转换和事务管理。 3. 适配器模式:将EJB接口转换为Web服务接口,使不兼容的系统能够通信。 4. 服务定位器模式:用于查找和访问Web服务,简化服务发现...