EJB 3.0是Java EE 5平台的一部分,相对前面的版本,它更加易于使用,它的最新版本 — JSR318:EJB 3.1 — 随Java EE 6发布,进一步简化了使用,并提供了许多反应常见使用模式的改进,如:
1、无接口视图:允许你指定一个企业Bean,只使用Bean类,不用编写独立的业务接口。
2、单元素集合:让你在一个企业Bean组件的多个实例间轻松地共享状态,或是在一个应用程序的多个企业Bean组件之间共享状态。
3、异步会话Bean调用:通过指定一个注解,让你可以异步调用会话状态方法。
4、简化打包:消除了企业Bean类必须打包到ejb-jar文件的限制,现在你可以直接将EJB类放到WAR文件中。
5、轻量级EJB:它是EJB 3.1的子集,包括大量的Java EE profiles。
无接口视图
EJB 3.0本地客户端视图是基于普通旧式Java接口(POJI)调用本地业务接口的,本地接口定义了暴露给客户端的业务方法,并是在Bean类上实现的,这种独立的接口有时会带来不必要的麻烦,并且价值也不大,相同模块内的来自客户端的本地访问细粒度组件尤其如此。
EJB 3.1通过让本地业务接口成为可选组件简化了这个方法,没有本地业务接口的Bean暴露的是无接口视图,现在你不用编写独立的业务接口就可以获得相同的企业Bean功能。
无接口视图与EJB 3.0中的本地视图具有相同的行为,例如,它支持如通过按引用调用语义、事务和安全传播等特性,但无接口视图不需要单独的接口,即Bean类所有的公共方法自动暴露给调用者。默认情况下,任何有空implements子句,且没有定义任何其它本地或远程客户端视图的会话Bean,暴露的是一个无接口视图。下面的会话Bean暴露了一个无接口视图:
1. @Stateless
2. public class HelloBean {
3.
4. public String sayHello() {
5. String message = propertiesBean.getProperty("hello.message");
6. return message;
7. }
8.
9. }
10.
使用本地视图时,无接口视图的客户端总是获得一个EJB引用 - 通过注入或JNDI查找,唯一的不同之处是EJB引用的Java类型是Bean类类型,而不是本地接口的类型,如下面的Bean客户端:
11. @EJB
12. private HelloBean helloBean;
13.
14. ...
15.
16. String msg = helloBean.sayHello();
注意,虽然这里没有接口,客户端不能使用new()明确地实例化Bean类,那是因为所有Bean调用都是通过一个特殊的EJB引用,或由容器提供的代理实现的,这样就允许容器提供其它的Bean服务,如池、容器管理的事务,并发管理等。
单元素集合
单元素集合Bean也被称为单元素集合,它是一种新的会话Bean,它保证在一个特定的Java虚拟机(JVM)应用程序中只被实例化一次。使用单元素集合,你可以在一个企业Bean组件的多个实例之间轻松地共享状态,也可以在一个应用程序的多个企业Bean之间共享状态,它就象为某个应用程序缓存数据的类一样。你可以以单元素集合形式定义类,这样可以确保在应用程序内只有一个缓存实例,一个共享状态。
使用@Singleton注解定义单元素集合,如:
1. @Singleton
2. public class PropertiesBean {
3.
4. private Properties props;
5.
6. public String getProperty(String name) { ... }
7.
8. @PostConstruct
9. public void initialize { // props = ...}
10.
11. }
12.
因为它只是另一种会话Bean,单元素集合可以定义相同的本地和远程客户端视图,可以象无状态的和有状态的Bean那样,客户端以访问无状态和有状态Bean相同的方式访问单元素集合,即通过EJB引用。例如,下面是一个可以访问PropertiesBean单元素集合的客户端示例:
13. @EJB
14. private PropertiesBean propsBean;
15.
16. ...
17.
18. String msg = propsBean.getProperty("hello.message");
19.
在这里,容器确保所有通过PropertiesBean引用的调用是由相同的PropertiesBean实例提供的服务,默认情况下,容器强制执行和其它组件类型相同的线程保证,换句话说,单元素集合是全线程安全的,特别值得一提的是,在任一时刻,允许多个调用访问一个特定的Bean实例,默认情况下,单元素集合会阻塞所有并发调用,但还有其它并发选项允许更高效地访问单元素集合实例。
分享到:
相关推荐
EJB 3.1五大模式改进令Java EE 6更好用
EJB3.1深入浅出EJB3.1深入浅出
EJB3.1技术培训:1、EJB3.1概述 Session Bean开发 Session Bean生命周期事件 Session Bean调用方式
EJB3.1这本书从各种bean的方面介绍了ejb3.1,ejb3.1拟补了3.0的不足,为ejb的广泛应用打下了基础,它既有重量级的应用,又融合了轻量级的应用。这次上传的是这本书的源代码
对于EJB3.1的学习与积累,对于EJB3.1的发展历史,生命周期,企业bean组件重点介绍
EJB 3.1 Cookbook(英文版) EJB 3.1 Cookbook(英文版) EJB 3.1 Cookbook(英文版)
这是EJB3.1规范文档(JSR 318),相对EJB3.0来说,新增了特性有:1.取消接口 2.引入Singletonsinessionbean. 3.Asynchronous调用 4.规范了JNDInames 5.提供了更强大的Time服务。 6.推出EJBLiteEJB容器简化版 等等
jboss7.1+ejb3.1建立第一个Ejb项目希望可以帮到你
He is the author of a Java EE 5 book in France and is also an Expert Member on Java EE 6, EJB 3.1, and JPA 2.0. He is the cofounder of the Paris Java User Group. For more, visit ...
这是ejb3.1用jboss7.1.1开发的HelloWorld文档,网上有一个和这个差不多,但是有些错误,这个是修正版的
EJB 3.1 Cookbook – Free Pdf Book
使用Netbeans 7.3 开发基于JSF, EJB, JPA的应用程序. JSF实用primefaces 3.4, 数据库使用oraclexe 11g. 注: 该文档是在原作者的netbeans6.8, javadb的基础上修改的,并在netbeans 7.3中测试成功.
EJB 3.1 Core Contracts and Requirements
Java EE 6 规范包括EJB 3.1 •Servlet 3.0 •JSP 2.2 •EL 2.2 •JMS 1.1 •JTA 1.1 •JavaMail 1.4 •Connector 1.6 •Web Services 1.3 •JAX-RPC 1.1 •JAX-WS 2.2 •JAX-RS 1.1 •JAXB 2.2 •JAXR 1.0 •Java EE...
_EJB3.1javaFX搭建工程.doc
本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含Session Bean、Message Driven Bean的详细介绍。本书内容主要包括三部分,第一部分介绍Java EE开发的基础知识...
《经典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的...
继ejb3.0后,3.1版本推出的功能更完善