Enterprise JavaBeans 介绍(一):EJB 种类介绍

原创 2002年02月28日 11:43:00

           (艾群科技 萧松瀛) <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

J2EE 在今日已经逐渐的成为企业中标准的应用程序平台,同时也

有许多的程序设计师,甚至网页设计人员,利用 JSP/Servlet 的便

利性,在 J2EE Server 上开发相关的应用,或是与公司内部的资源

相连接。

 

最近也有许多人慢慢的投入 J2EE 中的其它技术,其中 EJB 就是

一个很值得投资的技术。

 

这篇文件并不是要教您如何撰写 EJB ,但是希望让对 EJB 有兴

趣的使用者,能够大致了解 EJB 能让您作哪些事情。

 

EJB 依照特性的不同,目前区分为三种,分别是 Session Bean

Entity Bean ,以及 Message Driven Bean 。其中 Session Bean

Entity Bean 算是 EJB 的始祖,这两种 EJB EJB 规格 1.x 的时候

就已经存在了,而 Message Driven Bean 则出现在 EJB 2.0 的规格中

。目前也有少数几家厂商的 J2EE Server 支持 EJB 2.0 的规格。

 

Session Bean

Session Bean 主要的目的是让程序开发者将逻辑层抽离,特别是复

杂的逻辑可以放在 Session Bean 中。Session Bean 还可以再细分为

Stateful Session Bean Stateless Session Bean ,这两种的 Session Bean

都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session

Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一

个相对应的 Stateful Session Bean 的实体 (Instance 注一) ,换言之,

当使用者呼叫某个 Stateful Session Bean 的两个 methods 的时候,

EJB Container(注一) 会清楚的知道某个 EJB 的实体属于某一个使用

者的。因此一般的设计上,不会让两个使用者同时使用某个 Stateful

Session Bean (这并不是表示两个使用者不能使用同一个 Stateful Session

Bean)

 

Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使

用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,

EJB Container 并不会找寻特定的 Stateless Session Bean 的实体

来执行这个 method ,换言之,很可能数个使用者在执行某个 Stateless

Session Bean methods 时,会是同一个 Bean Instance 在执行。

 

从内存方面来看, Stateful Session Bean Stateless Session

Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,

然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。

 

Entity Bean

Entity Bean 主要是资料组件, Entity Bean 主要的目的,在于提供资

料,也就是说程序设计师可以将 Entity Bean 当程序资料,至于 Entity

Bean 实际上怎么存取实际上的数据库,那个则是另外一件事情。

 

Entity Bean 实际上是针对 RDBMS 而设计,也就是说当其它的程序使

Entity Bean 的时候, Entity Bean 的资料主要是从 RDBMS 而来,当

然,如果程序设计师熟悉 Entity Bean 的运作,那么也可以很轻易的把

RDBMS 用其它的数据库取代,像是 LDAP

 

Entity Bean 主要区分为 Bean-Managed Persistence 以及 Container-

Managed Persistence (简称 BMP CMP) ,这两种 Entity Bean 的型

态不同,但是目的相同,都在于提供资料!这两种 Entity Bean 主要的

差别在于维护资料的角色, BMP 是由 Bean 自行维护资料的一致性,

CMP 则是由 EJB Container 来维护。一个 Entity Bean 往往代表一张

RDBMS 的表格,这个表格内的一笔一笔的资料,则是透过另外一个

叫做 Primary Key(注三) Class 来加以区分。

 

Bean-Managed Persistence

当我们说 BMP 是由 Bean 自行维护资料的一致时,有些人会觉得太过

于抽象,简单一点来说,原来的资料均由数据库而来,而当资料从资

料库中取出之后,在 BMP 中需要自行宣告字段来存放这些资料,同

时也要自行撰写相关的程序代码,包括相关的 JDBC 语法等等。

 

Container-Managed Persistence

CMP 是比较高阶的 Entity Bean ,比较高阶的意思是说,撰写 CMP

程序设计师并不需要撰写大多数的 JDBC 语法,只需要透过一些定义

,即可产生 CMP ,实际上的 EJB 的程序代码则是 EJB Container 依据相

关的 Deployment Description (注四) 在部署(注五) EJB 的时候产生。

 

BMP CMP 的型态不同,适用的场合也不同,主要的差异在于如果

我们想要自行控制所有的动作,那么应该使用 BMP BMP 允许程序

设计师完全的控制 BMP 的资料存取行为,而 CMP 很适合快速开发,

但是由于要支持 CMP J2EE Server 需要较高的技术,因此每一家对于

 CMP 的支持程度也不大相同。

 

此外,数据库中有一个很重要的关系是 OR Mapping ,也就是常听到的

一对一,一对多,多对多这种关系,在 EJB 1.x 的规格中,这种一对多

的对应关系只有两种方式可以做出,一种是透过 Session Bean 来存取

多个 Entity Bean ,另外一种则是透过 BMP 来控制另外数个 BMP 或是

CMP ,但是在 EJB 2.0 的规格中,已经可以透过纯粹的 CMP 配合

EJB-QL(注六) 语法来做出这种对应关系,这也是 EJB 2.0 的一大特色。

 

Message Driven Bean

Message Driven Bean Session Bean 或是 Entity Bean 均不相同,

一般 Session Bean 或是 Entity Bean 都可以让使用者主动触发(可以

在需要的时候,呼叫他们的 method 来触发他们),但是 Message Driven

Bean 主要的目的在于反应 Message Queue 中的事件。

 

也就是当 Message Queue 中有讯息传入时, Message Driven Bean

以主动被触发,做出相对应的反应。因此如果说 Session Bean Entity

Bean 是同步模式的 EJB (使用者呼叫某个 Method ,就只能等 EJB 响应

之后才能进行下一步),那么 Message Driven Bean 就可以当成是专门处

理异步资料格式的 EJB ,也就是说程序设计师将某个讯息丢入 Message

Queue 之后,就继续执行下去,另外一方面, Message Driven Bean

受到通知,知道有某个讯息需要处理,这时候他会自行运作。

 

因此 Message Driven Bean 并不是直接给使用者呼叫的,而是透过 Message

Queue 来触发。

 

如果您对 EJB 有兴趣,可以参考 Sun 的教育训练课程 SL-351

 

注一:

Bean Instance 表示在内存中实际上产生的对象,一个 Bean Class

可以产生多个 Bean Instance Bean Instance 才是真正执行 EJB

method 的对象,可想而知的是, Instance 的数量越多,耗去的内存

越多。

 

注二:

EJB Container 是负责执行 EJB 的地方,所有 EJB 的产生,或是消灭

,或是执行等等,均透过 EJB Container 来处理。当使用者呼叫某个

EJB 的时候,实际上也是透过 EJB Container 来执行。

 

注三:

RDBMS 中,一张 Table 可能会有相关的 Primary Key 的字段,而

Entity Bean 中也有相对应的 Class 来表示这个 Primary Key ,譬如

如果数据库中,某个 VARCHAR 字段是它的 Primary Key ,那么

Entity Bean 中则可以用 String 来表示这个 VARCHAR 字段。

 

注四:

Deployment Description 是一种 XML 格式的文件(简称 DD),这个文件

用来描述 EJB 的种类,型态,以及相关的资料。 EJB 的运作中,也

DD 内的描述为主。

 

注五:

部署是一个动作,一个写好的 EJB 并不能单独执行,他必须被"置放"

EJB Container 之后才能够运作,这个置放的动作,我们叫做部署。

部署的动作相当复杂,但是对使用者来说很可能是按个按钮即可以完

成。

 

注六:

EJB-QL 是一种查询 EJB Instance 的特殊语法,语法格式与 ANSI SQL

很像,很容易上手。这个语法会被放置在 DD 之中,而 EJB Container

可以依照从 DD 取得的 EJB-QL 语法,自行产生与其它 CMP 的关联。

版权声明:本文为博主原创文章,未经博主允许不得转载。

EJB学习(四)——Enterprise Bean(企业Bean)和Entity Bean(实体Bean)

一、为什么使用EJB ?     企业Bean运行在EJB容器中,企业Bean实际上就是一个封装了业务逻辑的Java类,那么我们为什么要使用EJBne ?                     ...
  • zjx86320
  • zjx86320
  • 2015年07月30日 11:33
  • 1814

服务器系统的分类和介绍

众所周知,无论是香港服务器还是国内服务器还是其它服务器,它的系统都不太一样的,可以根据系统来选择服务器,那么服务器系统是什么?服务器系统分哪些种类?服务器系统有什么特点?这些问题都是新手站长所困惑的。...
  • Y1131309761
  • Y1131309761
  • 2017年06月13日 14:15
  • 321

CASE软件Enterprise Architect简介和使用入门图解

一 Enterprise Architect 生命周期软件设计方案——Enterprise Architect是以目标为导向的软件系统。 目录 1 介绍 2 作用 ▪ 提供建模工具 ▪...
  • bcbobo21cn
  • bcbobo21cn
  • 2016年06月10日 14:35
  • 4367

游戏类型分类及简介

1、RPG(Role Playing Game) 角色扮演游戏 RPG游戏的核心是扮演,在玩法上通常是玩家扮演游戏中的一个或多个角色,—般有完整的故事情节。RPG游戏强调的是游戏的剧...
  • u011476173
  • u011476173
  • 2014年11月25日 12:01
  • 1166

RedHat版本介绍

 Linux 是GNU/Linux的缩写,通常指各种Linux发行版的通称。常见的Linux厂家主要有Redhat/Novell等。Redhat有两大 Linux产品系列,其一是免费的Fedor...
  • yxwmzouzou
  • yxwmzouzou
  • 2014年06月29日 22:31
  • 2940

CSS选择器种类及介绍

首先说主要都有哪些先择器 1.标签选择器(如:body,div,p,ul,li) 2.类选择器(如:class="head",class="head_logo") 3.ID选择器(如:i...
  • jdfkldjlkjdl
  • jdfkldjlkjdl
  • 2013年12月11日 12:53
  • 1369

Ejb in action(四)——购物车实例演示有状态会话Bean

前面,我们介绍了一个入门实例,其实那就是无状态回话Bean的常用情况。 上一篇文章中,我们介绍了无状态会话Bean和有状态会话Bean的相关概念。为了加深大家对它们的理解,我们一起来实现一个有状态会...
  • liu765023051
  • liu765023051
  • 2014年05月13日 15:33
  • 2584

SDN概述,SDN是什么?

软件定义网络(Software Defined Network, SDN)在InfoWorld于2011年11月公布的将影响未来10年的十项新技术中排名第二。2012年7月,SDN代表厂商Nicira...
  • sch0120
  • sch0120
  • 2014年11月19日 23:12
  • 4117

数据库介绍与分类

前言:在现今互联网企业坐拥着爆炸式数据的信息时代,当掌握大量数据之后,如何分析使用它显得更加重要。当大量的数据集聚在一起后,有的人就在里面看到了机遇、看到了创新、看到了、、、那么,你又看到了什么?由此...
  • u012209626
  • u012209626
  • 2015年11月10日 21:14
  • 1958

ios中的GpuImage及相关滤镜介绍

GPUImage是Brad Larson在github托管的一个开源项目,项目实现了图片滤镜、摄像头实时滤镜,该项目的优点不但在于滤镜很多,而且处理效果是基于GPU的,比使用CPU性能更高。 下载地址...
  • cuichengjie
  • cuichengjie
  • 2014年10月26日 18:09
  • 2024
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Enterprise JavaBeans 介绍(一):EJB 种类介绍
举报原因:
原因补充:

(最多只允许输入30个字)