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更好用 在深入解析EJB 3.1的五大改进模式之前,我们首先简要回顾一下EJB(Enterprise Java Beans)的基本概念及其在Java EE平台中的重要性。EJB是Java EE的核心组件之一,旨在...
EJB3.1在前代版本的基础上做了大量的改进和增强,使得开发者能够更加高效地进行企业级应用的开发。 - **Session Bean开发**: - **会话Bean (Session Bean)**:是EJB的核心之一,主要负责与客户端交互以及执行业务...
EJB 3.1(Java EE 6 的一部分)是一个重要的里程碑,它在原有基础上进行了大量的改进,提供了更简洁、更易用的 API,使得开发者能够更加高效地构建企业级应用。 - **EJB 容器**:EJB 容器是 EJB 组件运行的环境,它...
同时,他还参与了多个Java EE规范的制定工作,包括JSR-316(Java EE 6)、JSR-317(JPA 2.0)和JSR-318(EJB 3.1)。 #### 七、书籍详情 - **页数**: 536页 - **出版社**: Apress(2010年8月出版第二版) - **语言...
- **EJB 3.1 Lite**:Java EE 6 中的EJB 3.1 版本进一步简化了企业级组件的开发过程,特别是通过EJB 3.1 Lite 在Web Profile 中的出现,使得开发者能够在不牺牲性能的情况下轻松地集成业务逻辑。 - **Servlet 3.0**...
5. **更好的集成性**:EJB 3.1增强了与其他Java EE技术的集成能力,如JSF、JPA等。 #### 三、EJB 3.1组件类型 EJB 3.1定义了几种主要的组件类型,每种类型都有其特定的应用场景和优势: 1. **会话Bean**: - **无...
Java EE 6中的EJB 3.1简化了之前的版本,使得编写业务逻辑变得更加简单。 4. **Contexts and Dependency Injection (CDI)**:CDI是一种新的依赖注入框架,它提供了更灵活的依赖管理和事件处理机制,极大地简化了组件...
- **Java EE 6 新特性**:这一版本引入了许多新的技术和改进,如简化开发过程、提高性能、增强安全性等方面的功能。 - **组件模型**:包括 EJB 3.1、Servlet 3.0、JSP 2.2 等核心组件模型,支持更灵活的应用程序架构...
### Java EE 6 标准与规范中文版关键知识点概览 #### 一、平台概述 ...综上所述,Java EE 6 为企业级应用程序提供了一个强大且灵活的开发平台,通过引入新的特性和服务,进一步提升了Java EE的实用性和适用范围。
EJB(Enterprise JavaBeans)是Java EE平台中的一个核心组件,用于构建企业级分布式应用程序。实体Bean(Entity Bean)是EJB的一种类型,它代表业务逻辑中的持久化对象,通常映射到数据库中的表。本篇文章将深入探讨...
2. **JSF 2.0(JavaServer Faces)**: 作为Java EE 6的一部分,JSF 2.0提供了更简洁的组件模型和更强大的表单处理能力,简化了用户界面的开发。 3. **EJB 3.1(Enterprise JavaBeans)**: EJB 3.1引入了更多的轻量...
WebLogic Server是Oracle公司的一款企业级Java应用服务器,它提供了对EJB(Enterprise JavaBeans)的强大支持。EJB是Java EE平台的核心组件,用于构建分布式、面向服务的企业级应用程序。本篇文章将深入探讨在...