`

第二节—EJB3.0总体架构

阅读更多

1.1      层次结构

1.1.1    基础点

EJB3.0层次结构

 

大多数传统企业应用程序都至少有四层:

1)  表现层是实际的用户界面,可以是浏览器或桌面应用程序;

2)  业务逻辑层定义业务规则;

3)  持久化层和数据库进行交互;

4)  数据库层由存储持久化对象的关系数据库(比如Oracle)构成。

3.1-1图所示。

 

         

        3.1-1

 

很显然EJB不是表现层技术,完全是实现业务逻辑和持久化层的健壮支持,图3.1-2显示了EJB如何通过其服务支持这些技术。

 

 

                                           3.1-2

EJB3提供的各个组件服务支持应用层。注意各个服务之间是相互独立的,所以你可以在最大程度上自由地选择对应用程序来说非常重要的特性。

 

1.2      容器结构

1.2.1    基础点

1.2.1.1  EJB容器介绍

EJB组件运行在EJB容器之中,EJB容器是一个EJB引擎,它提供了EJB组件运行的环境,并对EJB组件进行管理。EJB容器一般包含在EJB服务器(或应用服务器)中,EJB服务器可以拥有一到多个EJB容器。

要理解容器的架构,需要明白三点:代理存根(proxy stub)、容器以及bean实例本身。当调用bean的远程或本地接口时,你所使用的对象实例是一种被称为代理存根的东西。该代理存根实现session bean的远程或本地接口,并且负责将你的session bean调用经过网络发送到远程EJB容器,或将请求路由到位于本地的JVM内的EJB容器。EJB容器的职责是管理bean class实例及其安全和事务,容器会根据元数据或部署描述文件来启动事务并执行验证和授权任务,容器还负责管理bean的生命周期,并将来自代理的请求路由到真正的bean class实例。

存根、容器及bean实例关系图

EJB服务器支持6种基本服务:并发、事务管理、持久化、对象分布、命名和安全。这些基本服务为成功开发多层系统提供了必须的基础架构。EJB还提供了两个额外的服务:异步消息服务和定时服务。下图描述了EJB服务器结构

 

 

EJB服务器结构

1.2.1.2  EJB容器规约

 

我们常把EJB服务器中围绕bean的周边环境称之为容器。它是一个概念,而非物理构件。它充当beanEJB服务器之间的中介,管理EJB对角并帮助服务器构件管理bean资源,提供诸如事务,安全,并发和运行期命名之类的服务。容器与服务器并没有明确的界定。

 

接口javax.ejb.EJBContext是一个由容器实现的接口,是bean容器规范的组成部分。Session bean使用一个叫做javax.ejb.SessionContext的子类。Message-driven bean则使用javax.ejb.MessageDrivenContext子类。这些EJBContext类型为bean提供了其所在环境的相关信息,内容涉及:容器,使用enterprise bean的客户端,以及bean本身(相当于this指针,但EJB规范不允许在enterprise bean中使用this指针)。Bean可以在处理来自客户端的请求和来自容器的回调方法时使用这些信息。

 

Enterprise bean的接口中还包含了JNDI名字空间,我们称其为环境命名上下文(ENC),bean可以用它来查找所需的资源。

 

1.3      组件模型

 

1.3.1    基础点

 

EJB3组件模型中包含三种Enterprise Java Bean,分别是:Session BeanMessage Driven BeanEntity Bean

 

EJB3的架构非常灵活,提供了如下能力:

²       一个对象表述一个无状态的服务

²       一个对象表述一个无状态服务,且实现一个web service端点

²       一个对象表述一个无状态的服务,且它的调用由异步的消息来驱动

²       一个对象与一个特定的客户端表述一个会话。这样的会话对象会自动的保持会话状态,且不受多重客户端调用方法的影响

²       一个实体对象表述一个细粒度的持久化对象

 

EJB3规范通过大量使用annotation,大大简化了配置的难度;仅仅通过为普通的Session Bean方法加上简单的annotation@WebService)即可使该方法作为一个Web Service了。

 

1.3.1.1  接口类型

【远程接口】

   定义了session bean的业务方法,这些方法可以被来自EJB容器以外的应用访问到:也就是Bean提供给外界完成其工作的业务方法。

◆【本地接口】

   定义了session bean的业务方法,这些方法可以被处于同一EJB容器内的其他bean所使用:也就是bean提供给运行于同一JVM中的其他bean的业务方法。

◆【端点接口】

   定义了可以被EJB容器以外的应用系统经由SOAP协议进行访问的业务方法。

◆【消息接口】

      Message-driven Bean实现了该接口,该接口定义了一系列方法,像JMS这样的消息系统可以藉此来向bean发送消息。

 

1.3.1.2  Session Bean

Session Bean关注实现业务逻辑;在容器的支持下,Session Bean具有以下几个重要特征:

1、支持并发和线程安全

2、可支持远程处理和web service

3、支持事务与安全管理

4、支持计时器服务器和拦截器

 

Session Bean可以分为两类:无状态Session Bean和有状态Session Bean

 

1.3.1.3  Message Driven Bean

叙述MDB之前,先简单介绍J2EE中包含两种消息模型,点对点模型与发布-订阅模型。

请参看异步企业消息服务的详细说明。我们遇到的大部分MDB都是实现的JMS接口。

 

MDBMessage Driven Bean)同样实现业务逻辑;与Session Bean 不同的是,客户端不直接调用MDB的方法。客户端通过发送到消息服务器的消息来触发MDB的执行,实现了系统组件间的异步操作。MDB通常用于健壮系统的集成或异步处理。

 

²       MDB可以自行处理多线程,实现并发而不需要附加任何无业无关代码

²       MDB减少了使用消息机制的配置及编码量;也可以通过部署描述文件或注解来提供配置信息

 

 

MDB

容器收到消息

客户端

目的地

MDB

消息到达目的地

Order对象

 

使用@MessageDriven注解可以很容易的创建MDB,具体使用及示例这里暂不叙述。

JBoss服务器中使用的是JBoss MQ

1.3.1.4  Entity & JPA

EJB3的持久化由JPA管理,它使用成为对象-关系映射(ORM)的技术自动持久化Java对象。

 

JPA定义了持久化的规范,定义了如下标准:

²       用于把实体映射到数据库表的ORM配置元数据的创建

²       EntityManager API,用于对实体执行CRUD(创建、读取、更新和删除)

²       Java持久化查询语言(JPQL

 

目前比较常见的实现有JBoss HibernateOracle TopLinkApache OpenJPA。需要提到的是,JPA中并没有对缓存的处理加以规范,在选择JPA实现时,需要加以注意。

分享到:
评论

相关推荐

    EJB3.0 ——黎活明

    黎活明老师的这本书《EJB3.0》是国内首部全面解析EJB 3.0技术的专业著作,旨在帮助读者深入理解这一核心技术。 ### 1. EJB 3.0的核心概念 - **实体Bean(Entity Beans)**:EJB 3.0中的实体Bean不再需要编写复杂的...

    EJB3.0第五版

    **企业级JavaBeans(EJB)3.0第五版**是Java平台上用于构建可扩展、安全和事务处理的服务器端应用程序的重要技术。EJB规范旨在简化开发过程,提高生产力,并提供一套标准的服务,如持久性、分布式计算和安全性,使得...

    EJB3.0.pdf

    ### 第二章:运行环境配置 2.1 **下载与安装** EJB 3.0 的实现通常需要一个兼容的 Java EE 容器,如 JBoss。这里介绍了如何下载和安装 JBoss AS (Application Server),这是运行 EJB 应用的基础。 2.2 **运行一...

    EJB3.0+MVC实现购物车

    【EJB3.0+MVC实现购物车】 在软件开发中,EJB(Enterprise JavaBeans)和MVC(Model-View-Controller)是两种重要的设计模式,它们在构建复杂的企业级应用程序中扮演着关键角色。EJB 3.0是Java EE(Java Platform, ...

    Manning EJB3.0 in action

    根据提供的文件信息,我们可以推断出这是一本关于EJB 3.0的书籍,书名为《Manning EJB3.0 in action》。虽然标题和描述中的故事似乎与EJB 3.0无关,但从部分内容来看,这本书显然是专注于EJB 3.0的技术细节及其在...

    EJB3.0实例教程

    1. **基础概念**:了解EJB3.0的架构、组件类型及其角色。 2. **环境搭建**:安装JDK、EJB容器(如Glassfish、JBoss),设置开发环境。 3. **创建第一个EJB**:动手实践编写无状态会话Bean、实体Bean、消息驱动Bean。...

    EJB3.0教程

    EJB3.0是EJB规范的第三次主要版本,发布于2006年,它在EJB2.x的基础上进行了大量简化,降低了开发者的入门门槛。EJB3.0引入了注解(Annotations)来替代XML配置,使得部署和配置过程更为直观和简洁。 ### 2. EJB...

    flex+EJB3.0(GDS通讯)

    2. **创建EJB3.0组件**:定义EJB3.0实体类、会话bean和消息驱动bean,用以实现业务逻辑。使用注解如@Service、@Stateless、@PersistenceContext等进行声明式配置。 3. **定义AMF通道**:在BlazeDS/LCDS配置中定义AMF...

    Myeclipse+JBoss开发的EJB3.0 一对多程序

    2. **实体 Bean(Entity Beans)**:在EJB3.0中,实体Bean的实现变得更加简单,通过@Entity注解,可以直接将普通的Java类映射为数据库表,无需编写复杂的EntityBean接口和Home接口。 3. **持久化(Persistence)**...

    ejb3.0初学者必看

    #### 二、EJB 3.0 的适用人群 根据教程介绍,EJB 3.0主要适用于以下几类人群: - 对EJB感兴趣的学习者。 - 刚接触EJB的新手。 - 需要快速上手EJB 3.0进行项目开发的技术人员。 #### 三、EJB 3.0 运行环境配置 ###...

    学习EJB3.0(不是扫描版的,很清晰的,值得学习)

    EJB3.0是其第三个主要版本,发布于2006年,相较于之前的版本,EJB3.0引入了许多重大改进,使得开发过程更为简化,同时也增强了性能和可维护性。 **1. 注解驱动的开发** EJB3.0的一大革新是引入了注解(Annotations...

    EJB3.0(PDF)电子书

    EJB (Enterprise JavaBeans) 3.0 是一种Java企业级应用的标准规范,它简化了EJB 2.x 版本中复杂的编程模型,引入了许多新特性,如依赖注入、增强的会话Bean支持、简化实体Bean模型等。本文档主要基于《JbossEJB3.0...

    JBoss EJB3.0实例教程

    #### 知识点一:EJB3.0概念与应用架构 - **Enterprise JavaBeans (EJB)**:是Java EE平台的核心组件之一,用于开发分布式、可移植且高度可扩展的企业应用程序。EJB3.0作为其最新版本,引入了许多简化开发流程的新...

    Myeclipse+JBoss开发的EJB3.0 大型电子商务网站网上书店

    本项目的代码虽然简单,但对于初学者来说,是一个很好的实践平台,可以帮助理解EJB3.0在实际项目中的应用,同时也能加深对Java EE架构和开发流程的理解。通过这个实验,你可以了解到如何利用EJB3.0的特性来构建可...

    EJB 3.0 入门教程 黎活明

    - **架构**:EJB 3.0 支持轻量级的 POJO 风格编程,减少了配置和代码复杂度。同时,它也支持依赖注入和拦截器等特性。 #### 二、运行环境配置 - **环境搭建**:首先需要下载并安装 JBoss AS 4.2.x 或更高版本,...

    EJB 3.0

    #### 二、EJB 3.0 和 EJB 2.1 的区别 1. **简化API**:EJB 3.0 API设计更为简洁直观,摒弃了EJB 2.1中繁琐的部署描述文件,采用注解的方式简化了配置。 2. **支持POJO**:EJB 3.0允许将普通的Java类作为EJB使用,这...

    Manning.EJB.3.0.in.Action

    #### 第2章:初次接触EJB - **章节内容**:通过一个简单的示例来引导读者初步了解如何使用EJB。 - **核心知识点**: - EJB容器的概念及其作用。 - 如何创建和部署简单的EJB项目。 - 基础的EJB接口和实现类的编写...

Global site tag (gtag.js) - Google Analytics