首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EJB3事务传播

EJB 3 是 Java 企业版(Java Enterprise Edition,简称 J2EE)的一个关键组件,它为实现分布式系统的业务服务提供了一个可扩展的体系结构。下面是一些关于 EJB 3 事务传播的基本信息。

EJB3 事务传播

EJB 3 事务传播主要分为以下三类:

REQUIRED

这是默认的事务传播行为。在业务方法执行期间,如果有一个活跃的事务,则该事务将与业务方法共享。如果业务方法执行时没有活跃事务,则会抛出异常。

代码语言:txt
复制
Exception in component resource injection
javax.ejb.EJBException: Transaction is not active

REQUIRES_NEW

在这种事务传播行为中,新的事务将在执行业务方法时开始,而不管当前是否存在活跃的事务。如果在业务方法上提交或回滚事务,而其他事务的参与者尚未结束,则会抛出异常。

代码语言:txt
复制
Exception in transaction: Rollback complete after failure
org.jboss.ejb3.exception.EJBTransactionRolledbackException: EJB Exception occurred during commit processing, error while creating EJB transaction: javax.transaction.RollbackException: Transaction marked for rollback. Please fix failed transaction before performing this operation.

SUPPORTS

这种事务传播行为允许 EJB 组件与现有的事务分离,即使没有创建新的事务。这是最不安全的事务行为。如果当前没有创建新事务的业务方法发生异常,则会抛出异常。

代码语言:txt
复制
javax.ejb.EJBException: Could not commit EJB transaction; Nested exception is: javax.transaction.RollbackException: Transaction marked for rollback. Please fix failed transaction before performing this operation.

在选择合适的事务传播行为时,需要权衡业务的正确性和安全性。在具体实施时,还需要注意事务的隔离性和数据一致性等方面的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

spring事务传播

Spring 事务传播级别 Spring 事务传播级别与数据库事务隔离级别不同,传播分为 7 种级别: PROPAGATION_REQUIRED:Spring的默认传播级别,如果上下文中存在事务则加入当前事务...PROPAGATION_MANDATORY:该传播级别要求上下文中必须存在事务,否则抛出异常 PROPAGATION_REQUIRES_NEW:该传播级别每次执行都会创建新事务,并同时将上下文中的事务挂起...(降低事务大小,将非核心的执行逻辑包裹执行。) PROPAGATION_NEVER:该传播级别要求上下文中不能存在事务,否则抛出异常。...PROPAGATION_REQUIRED 在UserService中申明事务传播级别为PROPAGATION.REQUIRED: @Service public class UserServiceImpl...Propagation.REQUIRES_NEW传播级别下会开启自己的事务,独立运行 外围开启事务 方法一: @Transactional(propagation = Propagation.REQUIRED

71020

Spring事务传播机制

转载自 https://www.cnblogs.com/softidea/p/5962612.html Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播...通过事务传播行为控制当前的事务如何传播到被嵌套调用的目标服务接口方法中。...事务传播是Spring进行事务管理的重要概念,其重要性怎么强调都不为过。但是事务传播行为也是被误解最多的地方,在本文里,我们将详细分析不同事务传播行为的表现形式,掌握它们之间的区别。...事务传播行为种类 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 表1事务传播行为类型 事务传播行为类型...几种容易引起误解的组合事务传播行为 当服务接口方法分别使用表1中不同的事务传播行为,且这些接口方法又发生相互调用的情况下,大部分组合都是一目了然,容易理解的。

40020
  • Transactional事务传播行为?

    事务传播行为有7种,不是与数据库交互,数据库定义的,而是spring框架自带的。 本文主要介绍三种:required、nested、required_new。...Propagation_required(传播要求):默认的,最常见的,如果当前没有事务,就新建事务执行,若有事务,就加入当前事务执行。...外围方法未开启事务的情况下,内部两个事务开启此事务是互不干扰的,且不受外围异常影响。 默认传播要求下,内围事务里面若异常捕获到,则此内围事务里的其他程序正常运行。...外围事务捕获到异常,外围及其其他内围事务不可以正常运行。 Propagation_supports(传播支持):支持当前事务,若没有事务,就以非事务执行。...Propagation_nested(传播嵌套):如果当前存在事务,则在嵌套内执行,如果没有事务,则执行Propagation_required操作。

    46430

    Spring事务传播机制

    Spring事务传播机制 Spring事务传播类型 本文主要是讲述Spring事务传播机制,也就是大家开发过程中多多少少会遇到的父方法调用子方法,或者A方法调用B方法时事务传播机制问题,但是在开始讲Spring...事务传播机制之前需要先讲一下Spring事务的几种传播类型,如图 REQUIRED REQUIRED表示如果当前没有事务,就创建一个事务,如果已经存在一个事务,就加入该事务,是Spring默认的事务传播类型...父方法开启事务,子方法开启事务 父方法开启Spring默认事务传播类型,子方法开启Spring默认事务传播类型 设置insertRoleMenu 内部发生异常,同时insertRole 开启Spring...父方法开启REQUIRED事务,子方法开启REQUIRES_NEW事务 父方法开启Spring默认事务传播类型,子方法开启Spring REQUIRES_NEW事务传播类型 设置insertRoleMenu...父方法开启REQUIRED事务,子方法开启REQUIRES_NEW事务 父方法开启Spring默认事务传播类型,子方法开启Spring REQUIRES_NEW事务传播类型,异常产生发生在父方法最后一行

    11210

    Spring 事务传播行为

    传播行为定义关于客户端和被调用方法的事务边界。Spring定义了7种截然不同的传播行为。 1. PROPAGATION_MANDATORY,表示该方法必须运行在一个事务中。...如果当前没有事务正在发生,则抛出异常。 2. PROPAGATION_NESTED,表示如果当前有一个事务正在运行当中,则该方法应该运行在一个嵌套事务中。被嵌套的事务可以独立于封装事务进行提交或回滚。...七种事务理解 第一种事务 :mandatory 表示强制的,即方法必须在一个事务中运行,否则,抛出异常。它要求必须处在一个封装事务里,且它自己不会开启新的事务。...第二种事务 :nested 不作为事务,自己不启动事务,且外界不能有事务 第四种、第七种事务 :SUPPORTS 表示该方法不需要事务上下文,但外界如果有事务的话,它也支持在一个外界事务里运行。...第四种、第七种事务 :REQUIRED 表示当前方法必须在一个事务中运行,如果外界有事务,那么它就依赖于外界事务。如果外界没有事务,它就自己开启一个事务

    32020

    Spring事务事务传播机制(1)

    Spring事务管理提供了灵活的方式来处理事务,包括事务的创建、提交、回滚以及事务传播行为。 一、为什么需要事务?...二、Spring 中事务的实现 Spring 中的事务操作分为两类: 编程式事务(手动写代码操作事务)。 声明式事务(利用注解自动开启和提交事务)。...提交事务 commit; 回滚事务 rollback; 2、Spring 编程式事务(了解) Spring 手动操作事务和上面MySQL 操作事务类似,它也是有 3 个重要操作步骤: 开启事务(获取事务...提交事务。 回滚事务。.... propagation 事务传播行为,默认值为Propagation.REQUIRED isolation 事务的隔离级别.默认值为Isolation.DEFAULT timeout 事务的超时时间

    21440

    spring事务传播特性

    spring事务传播特性 什么是事物呢?...那我们再想一下,那岂不就是数据库的几个特性了(想一下MYSQL的数据库的特性) Spring的事务传播特性 通过上面对事物的说明,有编程经验的人应该都很清楚为什么需要失误了吧?...在spring中有两种事务管理: 编程式事务管理: 将事务管理代码嵌入到业务逻辑中来控制事务的提交和事务的回滚,必须在每个事物操作中包含额外的事务管理代码如下: ?...声明式事务管理 配置: 配置DataSource 配置事务管理器 事务传播特性 那些类那些方法使用事务 Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager...spring的事务传播属性 事务传播行为类型 说明 REQUIRED 如果有事务在运行,当前的方法就在这个事务内运行;否则,就启动一个新的事务,并在自己的事务内运行; REQUIRES_NEW 当前的方法必须启动新事务

    56020

    Spring事务事务传播机制(2)

    Spring事务管理提供了灵活的方式来处理事务,包括事务的创建、提交、回滚以及事务传播行为。...1、事务传播机制是什么?...Spring 事务传播机制定义了多个包含了事务的方法,相互调用时,事务是如何在这些方法间进行传递的。 2、为什么需要事务传播机制?...事务隔离级别解决的是多个事务同时调用⼀个数据库的问题,如下图所示: 而事务传播机制解决的是⼀个事务在多个节点(方法)中传递的问题,如下图所示: 3、事务传播机制有哪些?...Spring 事务传播机制包含以下 7 种: Propagation.REQUIRED:默认的事务传播级别,它表示如果当前存在事务,则加入该事务;如果当前没有事务,则创建⼀个新的事务

    20620

    Spring事务传播行为

    本文主要介绍下Spring事务中的传播行为。 事务传播行为介绍 Spring中的7个事务传播行为: 事务行为 说明 PROPAGATION_REQUIRED 支持当前事务,假设当前没有事务。...就新建一个事务 PROPAGATION_SUPPORTS 支持当前事务,假设当前没有事务,就以非事务方式运行 PROPAGATION_MANDATORY 支持当前事务,假设当前没有事务,就抛出异常 PROPAGATION_REQUIRES_NEW...新建事务,假设当前存在事务。...假设当前存在事务,就把当前事务挂起 PROPAGATION_NEVER 以非事务方式运行,假设当前存在事务,则抛出异常 PROPAGATION_NESTED 如果当前存在事务,则在嵌套事务内执行。...--设置所有匹配的方法,然后设置传播级别和事务隔离-->

    1.2K20

    springboot事务传播机制

    事务传播机制 所谓事务传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。...(,默认)REQUIRED :如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。 SUPPORTS :如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。...MANDATORY :如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。 REQUIRES_NEW :创建一个新的事务,如果当前存在事务,则把当前事务挂起。...NOT_SUPPORTED :以非事务方式运行,如果当前存在事务,则把当前事务挂起。 NEVER :以非事务方式运行,如果当前存在事务,则抛出异常。...NESTED :如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于 REQUIRED 。

    36820

    Spring之事务传播行为

    从名字理解起来,事务传播行为,既然为传播就肯定发生在两个实体之间,否则单个实体又如何发生行为呢。通俗点讲就是“一个巴掌拍不响”。下面进入正规话题。...事务传播行为主要用来描述由某一个事务传播行为修饰的方法被嵌套进另一个方法的事务中,该事务如何传播。这个概述可能不好理解,换句话就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。...methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自己开启一个新事务运行,这就是由methodB的事务传播行为决定的。...注意:methodA和methodB都加了事务。methodA()也可以不用开启事务,某一个事务传播行为修饰的方法并不是必须要在开启事务的外围方法中调用。...二、Spring中七种事务传播行为 通过上面伪代码加文字解释了解到事务传播行为的相关概念,下面就要学习事务传播行为的类型和运行机制。

    49430

    Spring事务传播行为

    事务传播特性 事务传播特性就是当一个事务方法被另一个事务方法调用的时候,这个事务方法应该如何执行。...,其中方法 A 开启的是 PROPAGATION_REQUIRED ,方法 B 开启的是 PROPAGATION_REQUIRES_NEW ,这种传播机制下,就是方法 B 有自己的事务,出错就回滚,没出错就提交...两个事务都是互不影响。 Spring 中的七种事务传播机制 1. 不需要事务 PROPAGATION_NEVER : 没有就非事务执行,有就抛异常。...可以有事务,也可以没有事务 PROPAGATION_SUPPORTS : 调用者有事务就加入,一起在事务中执行,没有就非事务执行。 3....PROPAGATION_NESTED : 如果没有事务,就新建一个事务,如果原来有,就在当前事务中嵌套其他事务

    1K20

    SpringBoot的事务传播机制

    一、事务传播机制: 事务传播行为是针对嵌套事务而言。...示例: @Transactional(propagation = Propagation.REQUIRED) 2.1.1 REQUIRED spring默认的事务传播行为就是它。 支持事务。...2.1.3 NESTED: 该传播行为解释:支持事务。如果当前已经在一个事务中了,则嵌套在已有的事务中作为一个子事务。如果当前没在事务中则开启一个事务。 内层事务结束,要等着外层一起提交。...当前有事务就支持。当前没有事务就算了,不会开启一个事物。 例子: 1.直接从外面调这个addStudent方法,外面没有事务,这个addStudent方法的事务传播行为是SUPPORTS。...2.1.5.MANDATORY 该传播行为解释:支持事务,如果业务方法执行时已经在一个事务中,则加入当前事务。否则抛出异常。

    2.3K41

    【JavaEE进阶】Spring事务事务传播机制

    Spring事务传播机制 1. 事务传播机制 事务传播机制是指在多个事务操作嵌套执行时,各事务之间如何相互关联和影响的规则。 2....为什么需要事务传播机制 事务传播机制的存在是为了**处理多个事务操作之间的关系和影响,以确保数据的一致性和完整性。...**以下是一些需要事务传播机制的情况: 嵌套调用:当一个事务方法内部调用另一个事务方法时,事务传播机制可以控制这两个事务之间的关系。...异常处理:在事务中,如果出现异常,事务传播机制可以决定是继续传播异常还是回滚事务。通过配置合适的传播行为,可以在异常发生时采取适当的处理方式,以保证数据的一致性。...事务传播机制有哪些 Spring框架提供了七种事务传播行为,用于控制事务方法的执行方式: (包含例子:假设你正在计划一次旅行。

    46730
    领券