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

在同一EJB内调用方法时的事务传播

是指在企业JavaBean(EJB)中,当一个方法调用另一个方法时,事务如何传播和处理的机制。

事务传播是指在方法调用链中,事务如何在不同方法之间传播和管理。在同一EJB内调用方法时,事务传播有以下几种方式:

  1. REQUIRED(默认):如果方法A调用方法B,方法B将加入方法A的事务中。如果方法A没有事务,则方法B将创建一个新的事务。这是最常用的事务传播方式。
  2. REQUIRES_NEW:无论方法A是否有事务,方法B都将创建一个新的事务。方法B的事务将独立于方法A的事务,即使方法A的事务回滚,方法B的事务也不受影响。
  3. SUPPORTS:如果方法A有事务,方法B将加入该事务。如果方法A没有事务,则方法B将以非事务方式执行。
  4. NOT_SUPPORTED:方法B将以非事务方式执行,即使方法A有事务。
  5. MANDATORY:方法B要求方法A必须有事务,否则将抛出异常。
  6. NEVER:方法B要求方法A不能有事务,否则将抛出异常。
  7. NESTED:方法B将在方法A的事务中嵌套执行。如果方法A没有事务,则方法B将创建一个新的事务。

不同的事务传播方式适用于不同的场景和需求。例如,REQUIRED适用于需要保证一致性和原子性的操作,REQUIRES_NEW适用于需要独立的事务执行的操作,SUPPORTS适用于不需要事务支持的操作等。

在腾讯云的云计算平台中,可以使用腾讯云的Serverless云函数(SCF)来实现EJB的功能。SCF是一种无服务器计算服务,可以快速构建和部署云原生应用。您可以使用腾讯云SCF来实现EJB中的事务传播机制。具体的产品介绍和使用方法,请参考腾讯云SCF的官方文档:腾讯云Serverless云函数(SCF)

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

相关·内容

18个示例详解 Spring 事务传播机制

什么是事务传播机制 事务传播机制,顾名思义就是多个事务方法之间调用事务如何在这些方法之间传播。...举个例子,方法 A 是一个事务方法方法 A 执行时候调用方法 B,此时方法 B 有无事务以及是否需要事务都会对方法 A 和方法 B 产生不同影响,而这个影响是由两个方法事务传播机制决定。...因为开发中,最简单事务是,业务代码都处于同一事务下,这也是默认传播机制,如果出现报错,所有的数据回滚。...但是处理复杂业务逻辑方法之间调用,有以下需求: 调用方法需要新增一个事务,新事务和原来事务各自独立。...调用方法不支持事务 调用方法是一个嵌套事务 7种传播机制详解 首先创建两个方法 A 和 B 实现数据插入,插入数据A: public class AService { public void

1.3K10

关于Spring 中方法内部调用自身方法事务 REQUIRE_NEW 不生效解释

问题来自:Spring事务传播行为中REQUIRES_NEW真的有效吗 这个是Spring 对拦截实现有关。Spring 拦截实现方法是动态生成一个代理类。...}); dynamicProxy.a(); } } 执行结果为: invoke in proxy this is a this is b 从这可以看出你类自行调用方法是不会被代理拦截到...,因此你使用事务注解也就不会生效。...,我们看到 Spring 获取当前被代理对象,直接进行invoke,类方法也不会被cglib 代理到 我们写一个测试方法来试下,在上面main 方法里最后加入测试代码: Enhancer enhancer...,可以使用 AopContext.currentProxy(); 方式得到,使用获取到代理类再调用方法就可以再次走事务处理逻辑了。

1.4K30

遗留系统

事务、安全等服务会随着远程调用进行传播。 CORBA ORB(Object Request Broker) 负责分布式系统中对象之间通信。...EJB 全面继承了 CORBA,Java Transaction Service (JTS) 是 CORBA 事务服务 OTS Java 映射,EJB 之间远程调用走 RMI/IIOP 协议,事务...理论上,部署不同品牌应用服务器上 EJB 之间可以互相调用EJB 也可以和任何语言开发 CORBA 对象进行交互,并且所有 EJB 和 CORBA 对象,可以运行在同一事务、安全上下文中。...EJB 目标是做真正中间件,连接不同厂商 J2EE 应用服务器,连接不同语言开发、运行在不同平台上 CORBA 对象,并且它们可以加入到同一个分布式事务中,受到同样安全策略保护。...翻阅 Java ORB 源代码,注意到了很多源文件上都标记了作者名字,于是顺手在网上一搜,还真找到了作者信息。

15310

Spring声明式事务管理

NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为他开启事务,如果方法一个事务中被调用,该事务会被挂起,调用结束后,原先事务会恢复执行。       ...SUPPORTS:该方法某个事务范围调用,则方法成为该事务一部分。如果方法事务范围外被调用,该方法就在没有事务环境下执行。        NEVER:该方法绝对不能在事务范围执行。...我发现许多开发人员使用 @Transactional 注释并没有花时间理解它作用。例如,像我一样清单 4 中单独使用 @Transactional 注释事务传播模式被设置成什么呢?...由于传播模式被设置为 SUPPORTS,所以不会启动任何事物,因此该方法有效地利用了一个本地(数据库)事务。只读标志只事务启动应用。本例中,因为没有启动任何事务,所以只读标志被忽略。...注意,清单 11 中两个方法都是公共方法,这意味着它们可以单独调用。当使用 REQUIRES_NEW 属性几个方法通过服务间通信或编排在同一逻辑工作单元内调用时,该属性就会出现问题。

91350

spring事务隔离级别、传播机制以及简单配置_mysql查看事务隔离级别

基于类似于 EJB CMT 属性传播行为定义。‎ ‎注意,除非启动实际事务,否则不会应用隔离级别和超时设置。‎ ‎...此外,并非所有事务管理器都支持这些高级功能,因此在给定非默认值可能会引发相应异常。‎ read-only flag ‎适用于任何事务上下文,无论是由实际资源事务支持还是资源级别以非事务方式运行。...此级别包括‎‎ISOLATION_REPEATABLE_READ‎‎中禁止,并进一步禁止以下情况:一个事务读取满足某个条件所有行,第二个事务插入满足该条件行,第一个事务针对同一条件重新读取,第二次读取中检索其他...请注意,事务同步某个范围‎‎不可用‎‎。 PROPAGATION_SUPPORTS ‎支持当前事务;如果不存在,则以非事务方式执行。类似于同名 EJB 事务属性。‎ ‎...javax.transaction.TransactionManager ‎请注意,事务同步某个范围‎‎不可用‎‎。现有同步将被挂起并相应地恢复。

1.1K10

fix bug:Spring中事务不生效问题

事务注解不生效问题 出现该问题主要原因主要有两点: Spring事务没有生效 出现异常无法正常回滚 Spring事务不生效情况 @Transactional用在非public方法上 未通过代理手段调用事务方法...正常注入Spring中,调用方法使用This调用事务方法,Spring不会注入this,所以无法使用事务。...); 出现异常无法回滚情况 未正确处理异常,事务生效也不一定能回滚 多次数据库操作,未配置事务传播 事务生效不能回滚情况: try/catch包裹标记了@Transactional注解方法,...③:catch作用就是捕捉方法异常,使回滚不传播到外层事务,以免对其他事务产生影响。...: 用户注册主表中新增数据,同时需要在子表中关联主表数据,现在业务要求,子表执行错误时回滚,子表不影响主表事务,也就是子表不能影响主流程,需要主表和子表不在同一事务中。

72210

重点来了:事务一致性深入研究&EJB全生命周期 | 从开发角度看应用架构5

二、EJB生命周期 应用程序中EJB组件应用程序服务器容器上下文(也就是EJB container)中运行。 EJB容器负责管理EJB生命周期(创建,执行和销毁)。...四、隐式事务管理,又称容器管理事务(CMT) CMT中,应用程序服务器隐式地EJB方法开始开始事务、并在方法结束提交事务,除非出现错误或异常。...如果在调用authenticate()没有事务,则应用程序服务器执行authenticate()之前启动新事务。该属性确保我们方法始终以新事务运行。...如果在调用authenticate()没有事务,则应用程序服务器将引发TransactionRequiredException。如果我们希望方法始终调用客户端事务上下文中执行,请使用此属性。...如果在调用authenticate()没有事务,则应用程序服务器执行authenticate()之前不会启动新事务。将此属性用于不需要事务方法

78940

可能是最漂亮 Spring 事务管理详解

不可重复读(Unrepeatableread): 指在一个事务多次读同一数据。在这个事务还没有结束,另一个事务也访问该数据。...那么,第一个事务两次读数据之间,由于第二个事务修改导致第一个事务两次读取数据可能不太一样。这就发生了一个事务两次读到数据是不一样情况,因此称为不可重复读。...桥本奈奈未 (2)事务传播行为(为了解决业务层方法之间互相调用事务问题): 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。...这里需要指出是,前面的六种事务传播行为是 Spring 从 EJB 中引入,他们共享相同概念。而 PROPAGATION_NESTED 是 Spring 所特有的。...默认情况下,事务只有遇到运行期异常才会回滚,而在遇到检查型异常不会回滚(这一行为与EJB回滚行为是一致)。 但是你可以声明事务遇到特定检查型异常像遇到运行期异常那样回滚。

68920

实战:将POJO类转换为EJB | 从开发角度看应用架构6

它运行在应用程序服务器上,可以被远程客户端以及同一个JVM进程中本地运行其他Java EE组件使用。...对于收到每条消息,它都会执行一个操作。 MDB为应用程序开发提供事件驱动松散耦合模型。 如果EJB客户端和EJB同一个JVM进程中本地运行,则客户端可以使用@EJB注释直接向EJB引入注入。...如果客户端是远程,则使用JNDI查找。 应用程序中EJB组件应用程序服务器容器上下文中运行。容器负责管理EJB生命周期(创建,执行和销毁)。...CMT中,应用程序服务器没有开发人员编写任何显式代码情况下管理事务,并且可以使用事务属性来控制范围。应用程序服务器遇到故障或异常可以自动执行回滚。...注意到这个类注入ItemRepository类并调用方法来添加,查看和列出所有todo项目。 ? ? 接下来,我们把POJO转化为无状态 EJB.

1.1K50

关于Spring事务Transactional,锁同步,并发线程Spring事务传播机制和数据库隔离级别

Spring事务传播机制和数据库隔离级别 标准SQL规范中定义了4个事务隔离级别,不同隔离级别对事务处理不同 。 未授权读取(Read Uncommitted): 也称 未提交读。...接口中规定了7种类型事务传播行为,它们规定了事务方法事务方法发生嵌套调用事务如何进行传播: package org.springframework.transaction.annotation;...相同线程中进行相互嵌套调用事务方法工作于相同事务中。如果这些相互嵌套调用方法工作不同线程中,则不同线程下事务方法工作独立事务中。...而锁存在于事务里,锁生命周期也是一个线程,一个线程里可多次取得同一个锁。...如果事务加在外部方法A,在内部方法里面有synchronized代码块B,那么当B执行完事务还未提交,其他线程进入synchronized代码块B后,读取库存数据不是最新

1.5K30

Spring事务与非事务方法相互调用

事务传播案例: 事务A类a()方法调用B类b()方法传播案例 A.a() B.b()事务配置 a()没有事务结果 a()有事务结果 REQUIRED b()创建自己事务; b()接受...,事务传播依然是生效,得到还是方法Aconnection,autoCommit还是为false,所以事务生效;反之,如果方法A没有注解@Transactional ,是不受事务管理,autoCommit...=true,那么传播方法B也为true,执行完自动提交,即使B标注了@Transactional ; 一个Service内部,事务方法之间嵌套调用,普通方法事务方法之间嵌套调用,都不会开启新事务....是因为spring采用动态代理机制来实现事务控制,而动态代理最终都是要调用原始对象,而原始对象调用方法,是不会再触发代理了!...所以以上就是为什么没有标注事务注解方法A里去调用标注有事务注解方法B而没有事务滚回原因; 问题二:事务方法A中调用另外一个事务方法B,被调用方法B事务没起作用 产生问题原因是:spring

10.7K24

框架篇二

openSessionInView   延迟加载要在session范围,用到时候再加载;   opensessioninview是web层写了一个filter来打开和关闭session,这样就表示一次...3、根据struts.xml配置,找到需要调用Action类和方法,并通过IoC方式,将值注入给Aciton。 4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。...● Spring能使EJB使用成为一个实现选择,而不是应用架构必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。   ...会出现重复读和幻影读   - REPEATABLE_READ会出现幻影读 - SERIALIZABLE最安全,但是代价最大,性能影响极其严重 传播行为:   - REQUIRED存在事务就融入该事务,...依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体讲:当某个角色需要另外一个角色协助时候,传统程序设计过程中,通常由调用者来创建被调用实例

54640

EJB学习笔记

6,Transaction事务(全局/局部)全局事务(分布式事务)局部事务同一数据库联接事务) 7,Dynamic Redeployment(动态重新部署,不停止原系统情况下,部署新系统...实体类中定义,只方法前加标注,并且方法返回值为void,方法为public 也就是: @PrePersist public void save(){} 另外类中写生命周期回调方法,就需要以这个实体类为参数了...四、实体回调 回调是由持久化管理器来调用,不是由EJB容器调用。 回调作用是什么? 实体被JPA操作,可以作预处理和后处理。...当调用到应用了这一注释方法EJB容器会将这个Bean实例销毁或是保留, retainIfExctption属性置为true,则会在调用Bean业务方法中出现异常则会保留这个Bean实例,置为...属性如果在要引入EJB组件相同模块中也就是同一个jar文件中,就需要自定beanName了 EJB拦截器(Intercepters) EJB拦截器,使用来截取客户调用方法,就像是过滤器,他只适用于

1.1K30

应用服务器分布式事务支持和Seata对比分析

应用模块拆分 应用按照业务模块进一步拆分,每一个模块都作为EJB,部署独立应用服务器中。完成一个业务请求会跨越多个应用服务器节点和资源,如何在这种场景保证业务操作事务呢?...当访问入口EJBJTA会自动开启全局事务事务上下文随着EJB远程调用在应用服务器之间传播,让被调用EJB也加入到全局事务中。...RM需要拦截并解析SQL,生成回滚语句,事务rollback自动进行数据还原。XAResource是对XA driver包装,资源参与分布式事务能力,都是由数据库提供。...事务上下文传播机制不同。应用服务器使用标准RMI-IIOP协议进行事务上下文跨节点传播。Seata是对各种RPC框架提供了插件,拦截请求和响应,事务上下文随着RPC调用进行跨节点传播。...我们可以学习Seata架构,抛弃掉沉重EJB/RMI-IIOP,让Spring Bean通过dubbo等RPC框架直接对外暴露服务,同时事务上下文可以RPC调用时进行传递: 我们甚至可以将JTA独立出来

20010

经典笔试篇-EJB及Spring篇

【基础】 答:remote 接口定义了业务方法,用于EJB 客户端调用业务方法;home 接口是EJB 工厂用于创建和移除查找EJB 实例。 165、客服端口调用EJB 对象几个基本步骤?...换言之,很可能数个使用者执行某个Stateless Session Bean methods ,会是同一个Bean Instance 执行。...状态变迁前会调用对应ejbActive 和ejbPassivate 方法。 170、EJB 包括(SessionBean,EntityBean)说出他们生命周期,及如何管理事务?...当客户机第一次调用一个Stateful Session Bean ,容器必须立即在服务器中创建一个新Bean 实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 方法容器会把调用分派到与此客户机相关联...171、EJB 事务是如何实现?何时进行回滚;【中等难度】 答:是通过使用容器或Bean 自身管理事务;当产生一个系统异常容器就自动回滚事务。 172、EJB 容器提供服务?

1.3K20

Spring声明式事务、编程式事务一文打尽

TransactionDefinition接口指定了: 传播性Propagation:通常,事务范围执行所有代码都在该事务中运行。但是,事务方法已存在事务上下文执行时,你可以指定其行为。...如果有必要的话,你可以一个事务上下文中调用setRollbackOnly()方法。这两种类型事务管理差异在于: 不像EJB CMT是绑定了JTA。...而如果是EJB CMT的话,你不可能影响容器事务管理机制,除非使用setRollbackOnly()。 Spring框架不像高端应用服务器那样支持远程调用之间传播事务上下文。...尽管EJB容器默认行为是事务发生系统异常(通常是运行时异常)自动回滚,EJB CMT并不会在出现应用异常自动回滚。但是Spring声明式事务默认行为是允许自定义异常变更回滚策略。...更多关于通知顺序信息可以参考Spring AOP ??? 默认处理@Transactional注解通知模式是proxy,只允许通过代理拦截调用同一本地调用不能以这种方式被拦截。

56900

Java面试之EJB & Spring

【基础】 答:remote 接口定义了业务方法,用于EJB 客户端调用业务方法;home 接口是EJB 工厂用于创建和移除查找EJB 实例。 4、客服端口调用EJB 对象几个基本步骤?...换言之,很可能数个使用者执行某个Stateless Session Bean methods ,会是同一个Bean Instance 执行。...状态变迁前会调用对应ejbActive 和ejbPassivate 方法。 9、EJB 包括(SessionBean,EntityBean)说出他们生命周期,及如何管理事务?...当客户机第一次调用一个Stateful Session Bean ,容器必须立即在服务器中创建一个新Bean 实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 方法容器会把调用分派到与此客户机相关联...10、EJB 事务是如何实现?何时进行回滚;【中等难度】 答:是通过使用容器或Bean 自身管理事务;当产生一个系统异常容器就自动回滚事务。 11、EJB 容器提供服务?

44830

SpringAOP和Spring事物管理

一个事务读取了另一个事务改写但还未提交数据,如果这些数据被回滚,则读到数据是无效。 2.不可重复读。 同一事务中,多次读取同一数据返回结果有所不同。 3.幻读。...很多人看到事务传播行为属性都不甚了解,我昨晚看了j2ee without ejb时候,看到这里也不了解,甚至重新翻起数据库系统教材书,但是也没有找到对这个分析。...这样,ServiceA.methodA或者ServiceB.methodB任何地方出现异常,事务都会被回滚。...但是这个事务并没有EJB标准中定义。...(调用方法过程中,事务是如何传递) 事务传播行为有七种,又分为三类: 第一类共同点:A和B方法同一事务中。

48940
领券