Transactional ejb 事务陷阱
对应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(),那么是成功的。
Transactional ejb 事务陷阱的更多相关文章
- spring@Transactional注解事务不回滚不起作用无效的问题处理
这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚.后来终于找到了原因. 如果你也出现了这种情况,可以从下面开始排查. 一.特性先来了解一下@Transaction ...
- @Transactional注解事务不回滚不起作用无效
写在前面 数据库Mysql8.0 添加@Transactional注解后事务并未起作用. 修改表的引擎后ok了.(详看下面转载内容) ================================ ...
- @Transactional spring 事务失效(转载)
原文地址:http://hwak.iteye.com/blog/1611970 1. 在需要事务管理的地方加@Transactional 注解.@Transactional 注解可以被应用于接口定义和 ...
- @Transactional注解事务不起作用
@Transactional注解事务不起作用 问题:今天在项目中碰到一个事务问题,使用@Transactional注解事务,抛出异常不会滚. 解决一:https://blog.csdn.net/u01 ...
- @Transactional(事务讲解)和springboot 整合事务
概述 事务在编程中分为两种:声明式事务处理和编程式事务处理 编程式事务处理:编码方式实现事务管理,常与模版类TransactionTemplate(推荐使用) 在业务代码中实现事务. 可知编程式事务每 ...
- Transactional topologies —— 事务拓扑
事务拓扑是怎么回事? Storm guarantees that every message will be played through the topology at least once. St ...
- spring @transactional 注解事务
1.在spring配置文件中引入<tx:>命名空间 <beans xmlns="http://www.springframework.org/schema/beans&qu ...
- Spring注解之@Transactional对于事务异常的处理
spring对于事务异常的处理 unchecked 运行期Exception spring默认会进行事务回滚 比如:RuntimeException checked 用 ...
- Spring 多数据源 @Transactional 注解事务管理
在 Spring,MyBatis 下两个数据源,通过 @Transactional 注解 配置简单的事务管理 spring-mybatis.xml <!--******************* ...
随机推荐
- CPU Cache 机制以及 Cache miss
CPU体系结构之cache小结 1.What is cache? Cache是用来对内存数据的缓存. CPU要访问的数据在Cache中有缓存,称为“命中” (Hit),反之则称为“缺失” (Miss) ...
- 下拉框、下拉控件之Select2
一.Select2的功能简介 select2插件给我们带来了更加友好的交互方式,比如查询控件展开后可通过关键字进行检索 例如: Select2也可以选择带查询控件的选择框... Select2也可以选 ...
- (三)类数组对象 NamedNodeMap简单介绍
Ele.attrbutes将返回一个NamedNodeMap对象,即NamedNodeMap存储的是元素的“特性Attribute”集合.而集合中的每一个元素,都是Attr类型的对象. html: & ...
- 使用PHP进行SOCKET编程
一.SOCKET原理图 二.SOCKET常用函数 1.创建socket函数: resource socket_create ( int $domain , int $type , int $proto ...
- timestamp 与 nonce 防止重放攻击
重放攻击是计算机世界黑客常用的攻击方式之一,所谓重放攻击就是攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程. 首先要明确一个事情,重放攻击是二次请求,黑客通过抓包获取到 ...
- Hibernate 连接不同数据库的方言
RDBMS 方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS3 ...
- ADO.NET工具类(二)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- 只要访问url地址 那么容器就会根据地址进行对象的创建
只要访问url地址 那么容器就会根据地址进行对象的创建
- codeforces104A
Blackjack CodeForces - 104A Tensor特别喜欢玩扑克,还总是爱发明一些关于扑克牌的游戏,有天他突然脑洞大开想到了这样的一个游戏: 现在有一副52张的扑克牌(没有大小王), ...
- java excel Workbook API
此文摘自:http://blog.sina.com.cn/zenyunhai 1. int getNumberOfSheets() 获得工作薄(Workbook)中工作表(Sheet)的个数,示例: ...