解释一下事务的概念:
在EJB中,容器提供了声明性事务的支持.EJB 支持7中不同的声明性事务.
Required(如果存在事务就在事务中运行,如果没有事务生成一个新事务),
RequiredNew(无论有没有事务都要生成新事务,在自己的事务中运行),
Mandatory(事务是必须的,如果没有事务报异常),
Supports(有事务使用事物,没有事务不使用事务),
NotSupports(不能在事务中运行),
Never(不能在另一个事务意境中调用此方法)
Bean-Managed(由Bean类自己管理事务)
什么是事务 ?
事务处理是由以一个单一的逻辑单位完成的一系列操作,它可以由一系列的操作组成,如果在该单位包含的操作执行完毕后没有发生错误,那么它所作的改变就是永久的了,如果一旦有错误,它就会回滚,不会作任何修改或改变。
事务有四种特性:ACID
Atomicity(原子性)
事务中的操作或者全部完成,或者全部不完成。
Consistency(一致性)
事务执行的结果是从一个一致性状态转移到另一个一致性状态
Isolation(隔离性)
一个事务的执行不能被其他事务干扰,即并发事务间内部数据是隔离的。
Durability(持久性)
事务开始执行后,他对系统中数据的改变应该是恒定的,不应受其他操作或故障的影响。
事务有几种属性? 分别是什么 ?
1.Required
始终运行在事物中,如果事物已经开始运行,则加入该事物,如果没有事物运行,则新开始一个事物
2.RequiredNew
始终开始新的事物,如果事物已经开始运行,则挂起该事物,然后新开始一个事物,如果没有事物运 行,则新开始一个事物
3.Supports
只运行在一个事物中,如果事物已开始运行,则加入该事物,如果没有事物运行,则不运行在事物中
4.Mandatory
Bean组件被调用时,事物必须已经在运行,如果没有事物运行,则返回一个 javax.ejb.TransactionRequired异常。
5.NotSupported
不能运行在事物中,如果事物已经开始运行,则挂起该事物,不运行在事物中
6.Never
不能运行在事物中,如果事物已经开始运行,则抛出javax.rmi.RemoteException或 javax.ejb.EJBException 异常。
Spring Transaction Manager
Propagation Behavior
TransactionDefinition.PROPAGATION_REQUIRED
支持现有事务。如果没有则新建一个事务。
TransactionDefinition.PROPAGATION_SUPPORTS
支持现有事务。如果没有则以非事务状态运行。
TransactionDefinition.PROPAGATION_MANDATORY
支持现有事务。如果没有则抛出异常。
TransactionDefinition.PROPAGATION_REQUIRES_NEW
总是发起一个新事务。如果当前已存在一个事务,则将其挂起。
TransactionDefinition.PROPAGATION_NOT_SUPPORTED
不支持事务,总是以非事务状态运行,如果当前存在一个事务,则将其挂起。
TransactionDefinition.PROPAGATION_NEVER
不支持事务,总是以非事务状态运行,如果当前存在一个事务,则抛出异常。
TransactionDefinition.PROPAGATION_NESTED
如果当前已经存在一个事务,则以嵌套事务的方式运行,如果当前没有事务,
则以 TransactionDefinition.PROPAGATION_REQUIRED 方式执行。
分享到:
相关推荐
5. Mandatory:要求调用者必须在一个事务中,否则EJB方法会抛出异常。 6. Never:EJB方法不会在任何事务上下文中运行,如果有事务,EJB方法会抛出异常。 每个属性都有其特定的使用场景,例如,如果需要确保EJB方法...
如果调用方已经在一个事务中,那么EJB方法将在同一个事务中执行;如果调用方不在任何事务中,EJB容器将为该方法创建一个新的事务。这适用于大多数情况下需要保证原子性的业务操作。 2. **RequiredNew**:无论调用方...
在分布式事务中,我们可能需要在`persistence.xml`中指定相应的事务属性,例如设置`transaction-type="JTA"`来启用JTA(Java Transaction API),这是处理分布式事务的关键。 3. **数据源配置** 数据源是连接...
在EJB3中,分布式事务处理是通过JTA(Java Transaction API)和JTS(Java Transaction Service)来实现的。当多个数据源或服务参与同一个事务时,就需要跨系统的事务协调,确保数据的一致性。在JBoss AS7中,可以...
EJB容器提供了许多功能,如事务处理、安全认证、资源管理等,以便开发者更方便地开发企业级应用程序。在EJB中,ejb-jar文件是一个重要的配置文件,用于描述EJB组件的配置信息。在本文中,我们将详细介绍ejb-jar文件...
例如,你可以指定一个方法是在一个新事务中运行,还是在一个已经存在的事务中运行。 2. 编程式事务管理:实体Bean可以使用 javax.ejb.EJBContext 接口的 setRollbackOnly() 方法来显式地指示事务回滚。但这通常是...
容器管理的事务(Container-Managed Transaction, CMT)由EJB容器自动控制,开发者无需显式编写事务代码,适用于大部分场景。Bean管理的事务(Bean-Managed Transaction, BMT)则需要开发者在Bean中显式控制事务边界...
通过将业务逻辑与基础架构关注点(如事务管理、安全性、持久性和并发控制)分离,EJB允许开发者专注于核心业务逻辑的实现,而将非功能性的复杂性交由容器来处理。 **EJB体系结构** EJB体系结构主要包括三个主要...
标题中的“pafa中使用ejb”指的是在Pafa(可能是某个特定的软件或框架的缩写)中集成和使用Enterprise JavaBeans(EJB)的技术。EJB是Java EE(现在被称为Jakarta EE)平台的一部分,它提供了一种标准的方式来创建可...
在EJB中,事务管理是至关重要的。JTA提供了一种标准的方式来处理分布式事务,确保数据的一致性。EJB3的bean默认支持声明式事务管理,即通过注解如`@TransactionAttribute`来定义事务的边界和策略。 通过这个PPT教程...
在EJB_TEST中,我们看到的是作者自编的一个EJB实例,这通常涉及到创建、部署以及运行EJB组件,以便展示其功能和工作原理。 **EJB的组成部分**: 1. **实体Bean (Entity Bean)**:代表业务数据,通常映射到数据库中...
EJB3.0中,事务可以通过方法级别的注解如`@TransactionAttribute`来控制。 7. **依赖注入(Dependency Injection, DI)**:EJB3.0引入了JSR-299(后来成为CDI,Contexts and Dependency Injection)的早期形式,...
- 配置JNDI连接以在Tomcat中远程访问EJB。 - **JBOSS集成环境中的WEB应用调用EJB**: - 在同一服务器上配置JBOSS和Tomcat以实现无缝通信。 #### 3. 开发前的准备 - **熟悉JBOSS目录结构**: - `bin`:包含启动...
2. **Spring AOP与ejb事务管理**:Spring的声明式事务管理可以与ejb的事务管理相结合,提供更细粒度的事务控制。 3. **Spring与ejb的协作**:在某些场景下,会话bean可能只负责协调工作,而具体的业务逻辑由Spring...
EJB是Java EE平台中的核心组件,用于构建可扩展、安全且事务处理的分布式应用程序。拦截器(Interceptors)是EJB 3.0引入的一个重要特性,它们允许开发者在EJB方法调用前后插入自定义的行为,提供了一种灵活的AOP...
EJB技术允许开发人员将业务逻辑封装在可重用的组件中,这些组件可以在受管环境中运行,由服务器管理生命周期、安全性、并发和事务处理。对于想要深入理解EJB的开发者来说,"EJB基础(学习EJB者必看)"这个资源应该涵盖...
在Java企业版(Java EE)应用开发中,EJB(Enterprise JavaBeans)是核心组件,用于构建可扩展、安全和事务处理的服务器端应用程序。JBoss AS(现在称为WildFly)是一个开源的应用服务器,它支持Java EE规范,包括...
WebLogic EJB学习笔记主要涵盖了企业级Java Bean(Enterprise JavaBeans,简称EJB)在Oracle WebLogic Server中的应用和管理。EJB是Java EE(Java Platform, Enterprise Edition)平台的核心组件,用于构建可扩展、...