`
yingfang05
  • 浏览: 123451 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

EJB 3.1五大模式改进令Java EE 6更好用之一

    博客分类:
  • ejb3
阅读更多
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五大模式改进令Java EE 6更好用 在深入解析EJB 3.1的五大改进模式之前,我们首先简要回顾一下EJB(Enterprise Java Beans)的基本概念及其在Java EE平台中的重要性。EJB是Java EE的核心组件之一,旨在...

    EJB3.1技术培训

    EJB3.1在前代版本的基础上做了大量的改进和增强,使得开发者能够更加高效地进行企业级应用的开发。 - **Session Bean开发**: - **会话Bean (Session Bean)**:是EJB的核心之一,主要负责与客户端交互以及执行业务...

    EJB.3.1.Cookbook.pdf

    EJB 3.1(Java EE 6 的一部分)是一个重要的里程碑,它在原有基础上进行了大量的改进,提供了更简洁、更易用的 API,使得开发者能够更加高效地构建企业级应用。 - **EJB 容器**:EJB 容器是 EJB 组件运行的环境,它...

    Beginning Java EE 6 with GlassFish 3, 2nd Edition

    同时,他还参与了多个Java EE规范的制定工作,包括JSR-316(Java EE 6)、JSR-317(JPA 2.0)和JSR-318(EJB 3.1)。 #### 七、书籍详情 - **页数**: 536页 - **出版社**: Apress(2010年8月出版第二版) - **语言...

    Java EE 6 Overview 新特性

    - **EJB 3.1 Lite**:Java EE 6 中的EJB 3.1 版本进一步简化了企业级组件的开发过程,特别是通过EJB 3.1 Lite 在Web Profile 中的出现,使得开发者能够在不牺牲性能的情况下轻松地集成业务逻辑。 - **Servlet 3.0**...

    Enterprise JavaBeans 3.1

    5. **更好的集成性**:EJB 3.1增强了与其他Java EE技术的集成能力,如JSF、JPA等。 #### 三、EJB 3.1组件类型 EJB 3.1定义了几种主要的组件类型,每种类型都有其特定的应用场景和优势: 1. **会话Bean**: - **无...

    Java EE 6权威指南 第4版 基础篇.((美)Eric Jendrock)

    Java EE 6中的EJB 3.1简化了之前的版本,使得编写业务逻辑变得更加简单。 4. **Contexts and Dependency Injection (CDI)**:CDI是一种新的依赖注入框架,它提供了更灵活的依赖管理和事件处理机制,极大地简化了组件...

    java ee 6教程

    - **Java EE 6 新特性**:这一版本引入了许多新的技术和改进,如简化开发过程、提高性能、增强安全性等方面的功能。 - **组件模型**:包括 EJB 3.1、Servlet 3.0、JSP 2.2 等核心组件模型,支持更灵活的应用程序架构...

    Java EE 6 标准与规范(中文版)

    ### Java EE 6 标准与规范中文版关键知识点概览 #### 一、平台概述 ...综上所述,Java EE 6 为企业级应用程序提供了一个强大且灵活的开发平台,通过引入新的特性和服务,进一步提升了Java EE的实用性和适用范围。

    ejb实体bean实例

    EJB(Enterprise JavaBeans)是Java EE平台中的一个核心组件,用于构建企业级分布式应用程序。实体Bean(Entity Bean)是EJB的一种类型,它代表业务逻辑中的持久化对象,通常映射到数据库中的表。本篇文章将深入探讨...

    Beginning Java™ EE 6 Platform with GlassFish™ 3: From Novice to Professional

    2. **JSF 2.0(JavaServer Faces)**: 作为Java EE 6的一部分,JSF 2.0提供了更简洁的组件模型和更强大的表单处理能力,简化了用户界面的开发。 3. **EJB 3.1(Enterprise JavaBeans)**: EJB 3.1引入了更多的轻量...

    Weblogic下ejb配置

    WebLogic Server是Oracle公司的一款企业级Java应用服务器,它提供了对EJB(Enterprise JavaBeans)的强大支持。EJB是Java EE平台的核心组件,用于构建分布式、面向服务的企业级应用程序。本篇文章将深入探讨在...

Global site tag (gtag.js) - Google Analytics