在Java EE中,在执行事务性业务方法期间引发的异常导致事务回滚。 但是,只有系统异常(即运行时异常)才是这种情况,该方法异常未在方法签名中声明。

对于应用程序异常(即检查的异常)或任何带@ApplicationException注释的异常,不会自动回滚事务。 有时这会引起企业开发人员的困惑。

对于EJB业务方法,还可以通过指定@ApplicationException(rollback = true)来强制事务回退应用程序异常。 但是,仅当EJB中的托管bean时才考虑使用此注释。

CDI还可以使用@Transactional事务上执行业务方法。 此注释使我们拥有更多控制权。 使用@Transactional我们不仅可以定义事务类型,例如REQUIREDREQUIRES_NEW ,而且可以定义我们要回滚或不希望回滚的异常类型:

public class CarManufacturer {@InjectCarFactory carFactory;@InjectEvent<CarCreated> createdCars;@PersistenceContextEntityManager entityManager;@Transactional(rollbackOn = CarCreationException.class,dontRollbackOn = NotificationException.class)public Car manufactureCar(Specification specification) {Car car = carFactory.createCar(specification);entityManager.persist(car);createdCars.fire(new CarCreated(car.getIdentification()));return car;}}

CarCreationException发生CarCreationException ,事务将被回滚,但不是NotificationException

翻译自: https://www.javacodegeeks.com/2018/01/transactional-exception-handling-cdi.html

CDI中的事务异常处理相关推荐

  1. php cdi_CDI中的事务异常处理

    php cdi 在Java EE中,在执行事务性业务方法期间引发的异常导致事务回滚. 但是,只有系统异常(即运行时异常)才是这种情况,该方法异常未在方法签名中声明. 对于应用程序异常(即检查的异常)或 ...

  2. springboot事务回滚源码_Spring Boot中的事务是如何实现的

    1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...

  3. springboot 事务手动回滚_Spring Boot中的事务是如何实现的

    1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...

  4. python切面异常处理_Spring项目中优雅的异常处理

    Spring项目中优雅的异常处理 前言 如今的Java Web项目多是以 MVC 模式构建的,通常我们都是将 Service 层的异常统一的抛出,包括自定义异常和一些意外出现的异常,以便进行事务回滚, ...

  5. springboot 事务_Spring Boot中的事务是如何实现的?懂吗?

    一个SpringBoot问题就干趴下了?我却凭着这份PDF文档吊打面试官. 金三银四第一天,啃透这些SpringBoot知识点,还怕干不赢面试官? Spring全家桶笔记:Spring+Spring ...

  6. Spring中的事务控制

    Chapter 1. Spring中的事务控制(Transacion Management with Spring) Table of Contents 1.1. 有关事务(Transaction)的 ...

  7. Spring中的事务控制(Transacion Management with Spring)

    1.1. 有关事务(Transaction)的楔子 1.1.1. 认识事务本身1.1.2. 初识事务家族成员 1.2. 群雄逐鹿下的Java事务管理 1.2.1. Java平台的局部事务支持1.2.2 ...

  8. Spring中的事务控制学习中(转)

    1.1. 有关事务(Transaction)的楔子 1.1.1. 认识事务本身 1.1.2. 初识事务家族成员 1.2. 群雄逐鹿下的Java事务管理 1.2.1. Java平台的局部事务支持 1.2 ...

  9. Spring中的事务控制学习中

    Chapter 1. Spring中的事务控制(Transacion Management with Spring) Table of Contents 事务管理(Transaction Manage ...

最新文章

  1. Aooms_基于SpringCloud的微服务基础开发平台实战_002_工程构建
  2. 实现二叉树的先序遍历、中序遍历、后序遍历
  3. 将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
  4. WEB开发中的页面跳转方法总结
  5. python2.x和3.x的区别 print_Python2.x和Python3.x的区别
  6. Android开发环境准备和常用命令总结
  7. 上海德拓人工智能事业部招聘图像算法工程师
  8. 问答Goodfellow:没有样例能不能训练机器学习算法?
  9. The Most Important Skill for Software Architects
  10. 《java程序员全攻略:从小工到专家》连载一:外行人眼中的IT人
  11. 【渝粤教育】国家开放大学2018年春季 3819-21T燃气安全管理 参考试题
  12. JAVA网络编程实战(笔记)
  13. win7主题文件夹背景破解
  14. 英语四六级考试系统+爬虫获取试题的系统(数据库设计)的开发思路
  15. Java 利用hutool工具实现导出excel并合并单元格
  16. Neural Collaborative Filtering复现
  17. 睡眠 应该用 a加权 c加权_创3年新高的创业板,应该如何选择
  18. DeFi基准利率今日为3.32%
  19. Zoundry Raven网易博客设置
  20. 使用zuma免费建站后应如何维护网站?

热门文章

  1. Hadoop生态Flume(一)介绍
  2. Google的面试题长啥样
  3. 漫画算法:找出缺失的整数
  4. 对于自绝对父相的理解
  5. 204787 ,194787 |0001 1131 0001 4226 7035 ![2480 ]
  6. ssm使用全注解实现增删改查案例——DeptMapperImpl
  7. java实现打印菱形
  8. 19年8月 字母哥 第三章 spring boot 配置原理实战 用热点公司网不行
  9. php如何求同列元素之和_求得这个数组中各个元素之和
  10. python中math库_Python的math库、random库实际应用