使用EJB事务属性控制事务的作用域

开发 后端
本文向您介绍EJB事务属性可以是Required,RequiresNew,Mandatory,NotSupported,Supports,Never中的一个。

EJB事务属性可以是如下几个值之一:

Required,RequiresNew,Mandatory,NotSupported,Supports,Never.

1、Required

如果客户端正运行在某个EJB事务中运行,且调用了EJB中的方法,则该方法在客户端的EJB事务中运行。如果客户端没有与某个EJB事务相关联,则容器在运行方法前先启动一个新EJB事务。Required属性适合绝大多数EJB事务,建议把它设置成默认的,至少在开发阶段。EJB事务属性是声明式的,后期也可以很容易的修改。

2、RequiresNew

如果客户端运行在某个EJB事务中,并且调用了EJB中的方法,则容器将采用如下操作:

   (1) 挂起客户端EJB事务

   (2) 启动一个新EJB事务

   (3) 把调用委派给方法

   (4) 方法执行完毕之后,回复客户端EJB事务

如果客户端没有与某个EJB事务相关联,则容器在运行方法前先启动一个新EJB事务。如果确保方法始终在一个新EJB事务中运行,应该使用RequiresNew属性。

3、Mandatory

如果客户端运行在某个EJB事务中且调用了EJB中的方法,则该方法运行在客户端EJB事务中。如果客户端没有与某个EJB事务相关联,则容器抛出TransactionRequiredException。如果EJB中的方法必须使用客户端的EJB事务,则应该使用Mandatory属性。

4、NotSupported

如果客户端在某个EJB事务中运行且调用了EJB中的方法,则容器先挂起客户端EJB事务,调用方法结束之后回复客户端EJB事务。如果客户端没有与某个EJB事务相关联,则容器在运行方法前不启动EJB事务.对于不需要EJB事务的方法,可以考虑该属性。EJB事务需要一定的开销,NotSupported属性可以提高性能。

5、Supports

如果客户端运行在某个EJB事务中且调用了EJB中的方法,则该方法运行在客户端的EJB事务中。如果客户端没有与某个EJB事务关联,则容器运行方法前不启动新的EJB事务。

6、Never

如果客户端运行在某个EJB事务中且调用了EJB中的方法,则容器抛出RemoteException异常。如果客户端没有与某个EJB事务关联,则容器运行方法之前不启动新的EJB事务。

【编辑推荐】

  1. Eclipse+JBoss+EJB3的Session Bean注释方法
  2. EJB容器的存取和实现
  3. Java中的EJB的介绍
  4. EJB3.1增加了Singleton Beans的概念
  5. 关于EJB详细概述(上)
责任编辑:佚名 来源: 百度博客
相关推荐

2009-07-02 10:14:34

EJB事务属性

2012-06-07 09:18:16

ibmdw

2009-11-06 11:07:52

WCF事务属性

2017-01-19 15:32:36

Java全局事务本地事务

2024-03-15 11:59:25

SQL数据库ACID

2009-06-30 16:41:12

Hibernate的事

2020-08-19 09:45:29

Spring数据库代码

2010-11-22 16:40:00

MySQL事务表

2020-07-17 08:07:54

Spring数据库事务

2023-06-28 08:25:14

事务SQL语句

2021-11-26 00:04:01

RedisLua 脚本

2022-02-21 11:21:40

golang编程语言

2010-03-02 16:15:59

WCF控制事务

2018-03-22 18:30:22

数据库MySQL并发控制

2012-08-06 16:09:40

Redis数据库

2009-03-31 09:39:13

J2EE事务并发并发访问

2011-06-07 09:37:32

J2EE

2023-12-06 08:23:16

MVCCmysql

2009-07-03 17:39:20

JSP与EJB

2022-04-26 21:49:55

Spring事务数据库
点赞
收藏

51CTO技术栈公众号