在EJB3.0的业务方法中,我们可以一般都猜想,可以调用EntityManager的getTransaction()方法得到一个事务对象,然后再通过该事务的begin()、commit()方法,可以开启、提交事务,然后关闭连接。然而,在开发过程中却发现这样做会抛出异常:java.lang.IllegalStateException: Illegal to call this method from injected, managed EntityManager。
在Hibernate中,我们明明可以手动开启、提交事务的,为什么在EJB3.0中却不行呢?上网找了一下,终于发现了问题的所在。
原来,我们在使用EntityManager的时候,是通过注解@PersistenceContext注入到EJB容器中,并由这个容器管理我们的事务,而且必须对指定的业务方法添加@Local或@Remote注释才能正常工作,所以我们根本就不用手动控制事务。但往往我们需要在一个业务方法中对数据库多次访问,这会涉及到事务的传播行为,如果不手动控制,我们又如何让不同的数据库操作设定到指定的事务中呢?
不怕,EJB3.0还是帮我们做了很多事情的。我们很容易想起Spring对Hibernate的事务管理,而事实上EJB容器也具备这样的功能,我们可以在相应的业务方法前添加形如@TransactionAttribute(TransactionAttributeType.REQUIRED)的注解(具体含义就不再多讲了),给该方法中的数据库操作指定事务传播行为,这样我们就无需手动开启、提交事务、关闭连接了,而程序也就不会再抛java.lang.IllegalStateException: Illegal to call this method from injected, managed EntityManager异常了。
转自:
http://hi.baidu.com/waltertan/blog/item/045249739b66e5108601b01a.html
分享到:
相关推荐
1. Beginning EJB3 Application Development From Novice to Professional联接http://download.csdn.net/source/1865607 2. EJB3 in Action 2007联接http://download.csdn.net/source/1865636 3. Mastering EJB3联接...
1. Beginning EJB3 Application Development From Novice to Professional联接http://download.csdn.net/source/1865607 2. EJB3 in Action 2007联接http://download.csdn.net/source/1865636 3. Mastering EJB3联接...
1. Beginning EJB3 Application Development From Novice to Professional联接http://download.csdn.net/source/1865607 2. EJB3 in Action 2007联接http://download.csdn.net/source/1865636 3. Mastering EJB3联接...
[2] 安装 JBoss EJB3: 16 [3] 第一次启动 JBoss: 18 [4] 安装 Eclipse WTP: 18 [5] 安装 JBoss IDE: 18 [6] 使用 Eclipse 建立第一个 EJB3 Project [ 即 HelloWorld ]: 18 [7] 建立 HelloWorld Stateless ...
ejb3中文版
简明扼要概括EJB的工作原理,让你能更好地理解EJB的工作机制
本书是关于EJB 2.1的经典书籍,是EJB开发者必备的参考书。全书共分为3篇。第1篇对EJB编程基础进行介绍,它概要性地对EJB进行了阐述,无论是EJB初学者,还是资深EJB专家,这部分内容都值得阅读;第2篇重点关注EJB编程的具体...
EJB3(中文版)EJB3(中文版)EJB3(中文版)EJB3(中文版)EJB3(中文版)EJB3(中文版)EJB3(中文版)
EJB3开发指南英文版《EJB.3.Developer.Guide》 出版商:PacketPublishing 出版日期:2008年5月 页数:276 简介: 第一章:EJB3体系结构简介 第二章:Session Beans 第三章:实体Entities 第四章:对象关系映射ORM 第...
EJB容器 EJB 容器的个人实现。 特征: 单例 bean 和无状态 bean 的管理。 为此,框架用户只需要在实现 EJB 的代码中放置 @Singleton 或 @Stateless 注释。 EJB 注入。 可以使用@EJB 注释一个类的一个或多个字段,...
Mastering+EJB3 EJB3+IN+ACTION Beginning+EJB3+Application+Development
ejb3.0培训教程与源码(绝对精品) .................... 1, 服务器端的一个组件模型,能部署在多层环境中; EJB API, javax.ejb.*; 2, EJB容器可以为我们提供中间件服务; 3, EJB客户端:(常见的) 1) 独立的java程序...
EJB3开发Entity EJB3开发Entity
ejb3_structs ejb and jboss
EJB3入门例子,jboss5+EJB3+myEclipse
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...
ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全
开发ejb时总是无法用@EJB 解决办法: javax.ejb.EJB 需要的jar___jboss-ejb3x.jar
本书是公认的EJB 3权威著作,详细介绍了使用EJB 3进行企业级开发的方方面面,包括EJB 3基础、使用EJB 3构造业务逻辑、Java持久化API、EJB 3的实际应用、移植性和互操作性等等。
《经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发》介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含Session Bean、Message Driven Bean的...