设为首页收藏本站language 语言切换
查看: 1004|回复: 0
收起左侧

Java应用基础:EJB事务属性的六个关键值

[复制链接]
发表于 2010-2-20 14:05:28 | 显示全部楼层 |阅读模式
<p >EJB事务属性可以是如下几个值之一:<p ><p >◆Required<p ><p >◆RequiresNew<p ><p >◆Mandatory<p ><p >◆NotSupported<p ><p >◆Supports<p ><p >◆Never<p ><p >1、Required<p ><p >如果客户端正运行在某个EJB事务中运行,且调用了EJB中的方法,则该方法在客户端的EJB事务中运行。如果客户端没有与某个EJB事务相关联,则容器在运行方法前先启动一个新EJB事务。Required属性适合绝大多数EJB事务,建议把它设置成默认的,至少在开发阶段。EJB事务属性是声明式的,后期也可以很容易的修改。<p ><p >2、RequiresNew<p ><p >如果客户端运行在某个EJB事务中,并且调用了EJB中的方法,则容器将采用如下操作:<p ><p >(1) 挂起客户端EJB事务<p ><p >(2) 启动一个新EJB事务<p ><p >(3) 把调用委派给方法<p ><p >(4) 方法执行完毕之后,回复客户端EJB事务<p ><p >如果客户端没有与某个EJB事务相关联,则容器在运行方法前先启动一个新EJB事务。如果确保方法始终在一个新EJB事务中运行,应该使用EJB事物属性中的RequiresNew属性。<p ><p >3、Mandatory<p ><p >如果客户端运行在某个EJB事务中且调用了EJB中的方法,则该方法运行在客户端EJB事务中。如果客户端没有与某个EJB事务相关联,则容器抛出TransactionRequiredException.如果EJB中的方法必须使用客户端的EJB事务,则应该使用EJB事物属性中的Mandatory属性。<p ><p >4、NotSupported<p ><p >如果客户端在某个EJB事务中运行且调用了EJB中的方法,则容器先挂起客户端EJB事务,调用方法结束之后回复客户端EJB事务。如果客户端没有与某个EJB事务相关联,则容器在运行方法前不启动EJB事务。对于不需要EJB事务的方法,可以考虑该属性。EJB事务需要一定的开销,EJB事物属性中的NotSupported属性可以提高性能。<p ><p >5、Supports<p ><p >如果客户端运行在某个EJB事务中且调用了EJB中的方法,则该方法运行在客户端的EJB事务中。如果客户端没有与某个EJB事务关联,则容器运行方法前不启动新的EJB事务。<p ><p >6、Never<p ><p >如果客户端运行在某个EJB事务中且调用了EJB中的方法,则容器抛出RemoteException异常。如果客户端没有与某个EJB事务关联,则容器运行方法之前不启动新的EJB事务。<p >< align=right></P><p align="center"></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-11 23:23 , Processed in 0.106188 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表