对应ejb,默认是对整个类使用事务。所以所有方法都开启事务。

而对于用TransactionAttribute注释来引用容器管理的事务,只能在第一级的方法中使用。对应类中的方法再调用其它类中方法,注释事务就不起作用了。

代码示例如下:

在一个没有事务的类中调用:

@TransactionAttribute(javax.ejb.TransactionAttributeType.NEVER)
@Stateless

public class MyTask{

@Inject Task t;

t.doTask();

}

@TransactionAttribute(javax.ejb.TransactionAttributeType.NEVER)
@Stateless
public class Task {

public void doTask(){

job();

}

@TransactionAttribute(javax.ejb.TransactionAttributeType.REQUIRED)

public void job(){

//db insert operation ....

}

}

这个调用将会抛出:

ERROR [org.jboss.as.ejb3.invocation] (Batch Thread - 9) WFLYEJB0034: EJB Invocation failed on component PeekCompute for method public void com.italktv.colnv.stat.task.PeekCompute.start(java.lang.String): javax.ejb.EJBException: javax.persistence.TransactionRequiredException: Executing an update/delete query
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInNoTx(CMTTxInterceptor.java:213)

但是,如果MyTask里面直接调用 t.job(),那么是成功的。

转载于:https://www.cnblogs.com/bigben0123/p/7133339.html

Transactional ejb 事务陷阱相关推荐

  1. 事务策略: 了解事务陷阱--转

    在 Java 平台中实现事务时要注意的常见错误 在应用程序中使用事务常常是为了维护高度的数据完整性和一致性.如果不关心数据的质量,就不必使用事务.毕竟,Java 平台中的事务支持会降低性能,引发锁定问 ...

  2. spring@Transactional注解事务不回滚不起作用无效的问题处理

    这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚.后来终于找到了原因. 如果你也出现了这种情况,可以从下面开始排查. 一.特性 先来了解一下@Transactio ...

  3. @Transactional注解事务不回滚不起作用无效

    @Transactional注解事务不回滚不起作用无效 以下内容均来自http://blog.csdn.net/u011410529/article/details/54287307 转载 这几天在项 ...

  4. Transactional(事务)

          Transactional(事务) 1.依赖 <dependency><groupId>org.springframework.boot</groupId&g ...

  5. [转载]权衡 Apache Geronimo EJB 事务选项,第 3 部分: 综合所有事务

    权衡 Apache Geronimo EJB 事务选项,第 3 部分: 综合所有事务 Jonathan Sagorin 在 由三部分组成的系列文章 的最后一部分中对 Enterprise Java™B ...

  6. 从@Transactional看事务的传播和隔离

    文章目录 1. transactionManager 当在配置文件中有多个TransactionManager,可以用该属性指定使用哪个事务管理器 2. 事务的传播行为(propagation) ,默 ...

  7. Spring注解之@Transactional对于事务异常的处理

    spring对于事务异常的处理 unchecked   运行期Exception   spring默认会进行事务回滚       比如:RuntimeException checked       用 ...

  8. Spring @transactional annotation 事务使用详解

    来源:http://www.yihaomen.com/article/java/412.htm annotation 方式写程序越来越称谓主流了,以前用hibernate 也用 xml 一大堆配置文件 ...

  9. @Transactional子事务单独提交

    需求是在添加了事务的service方法内,执行一个单独事务的添加方法,service报错等导致数据回滚时,单独事务的方法不回滚. 单独提交方法需要放在不用的服务类里,使用Transactional的p ...

最新文章

  1. JavaScript--'data-'的用法(1)
  2. php正则判断不规范字符串,php学习_第9章_字符串处理与正则表达式
  3. Android 最火的高速开发框架xUtils
  4. 【caffe解读】 caffe从数学公式到代码实现1-导论
  5. Eclipse is running in a JRE, but a JDK is required错误的解决
  6. Codeforces Round #636 (Div. 3) F. Restore the Permutation by Sorted Segments 思维 + 暴力
  7. .vue文件_Spring Boot 2.x(十六):玩转vue文件上传
  8. 教你一个快速视频处理的神器:Python moviepy
  9. python使用级数pi的近似值_JavaScript与Python计算pi的近似值运行时间对比
  10. mysql like BR%._MySQL Like子句
  11. 给你自己的博客加个 Markdown
  12. 笔记本电脑小键盘上有 home、pgup、pgdn、如何使用
  13. s5p6818 Smart6818 nanopi3开发板,uboot启动linux,配置nfs文件系统,设置bootargs
  14. 解决KEIL MDK编译生成Bin文件时,却生成了*bin文件夹
  15. 报错:xxx.foreach is not a function
  16. 回顾过去。。展望未来
  17. 2018年人均寿命是多少_那是2018年
  18. centos7升级GLIBC版本
  19. gil 简述_求职面试常见问题:Python常见面试题全解析附答案
  20. Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View

热门文章

  1. 为什么有人说开车时,最能看出一个人的情商和潜力?
  2. 被单位开除后,以前的工龄还算吗?
  3. 每天晚上坚持喝一杯无糖燕麦会怎样?
  4. 玩抖音,你喜欢的,都是对自身没好处的
  5. 负债人有尊严吗?我觉得真的没有
  6. 大家对于晚上下班兼职滴滴司机有什么看法?
  7. MyBatis中jdbcType和Oracle以及MySql数据类型对应关系表
  8. python将时间戳转化为标准时间格式的方法
  9. php和asp渲染页面,Vue.js与 ASP.NET Core 服务端渲染功能
  10. SQL Server中的T-SQL RegEx命令