Java 版 (精华区)

发信人: kaola (不是我不小心!), 信区: Java
标  题: EJB技术介绍与研究  
发信站: 哈工大紫丁香 (2001年01月13日13:22:51 星期六), 站内信件


EJB技术介绍与研究 作者:陆绍飞 发布时间:2001/01/08
文章摘要:
  EJB 是由Sun公司提出的基于Java的面向对象的组件标准,和原来的JavaBean不同,
EJB组件包含一定的业务规则,运行在服务器端。在目前的企业计算环境中,EJB和com,
CORBA并列三大组件标准。本文总结了EJB技术介绍与研究。
----------------------------------------------------------------------------
----
正文:
EJB技术介绍与研究  
一. 什么是EJB
  EJB 是由Sun公司提出的基于Java的面向对象的组件标准,和原来的JavaBean不同,
EJB组件包含一定的业务规则,运行在服务器端。在目前的企业计算环境中,EJB和com,
CORBA并列三大组件标准。
1. EJB体系结构中的六个角色
  EJB规范定义了完成一个基于EJB组件的分布式应用所需要的六个角色,这六个角色
可以由不同的厂商来担当,也可以某个厂商担当多个角色。这六个角色是:
  Enterprise Bean Provider EJB组件开发者负责编写EJB组件,EJB组件开发者是应
用领域的专家。
  Application Assembler 应用组合者负责将各种EJB组合成一个完整的应用系统。
  Deployer 部署者负责将包含EJB组件的ejb-jar文件部署到应用服务器中。
  EJB Server Provider EJB服务器提供者负责实现一些底层的系统服务,如交易管理
等。 EJB服务器提供者是系统领域的专家。
  EJB Container Provider EJB容器提供者负责提供EJB组件的运行环境,EJB容器提
供者和EJB服务器提供者一般是由相同的厂商担当,提供的产品叫应用服务器。
  System Administrator 系统管理员负责为EJB服务器和容器提供一个企业级的计算
和网络环境。
  以上角色的划分保证了EJB标准的开放性和兼容性,各个角色互不依赖,也就是说,
遵循EJB规范开发的应用不依赖于任何特定的应用服务器,可以部署到任何支持EJB规范
的应用服务器中。
2. EJB组件的类型
  EJB组件有三种类型:
  Stateless Session Bean
  Stateful Session Bean
  Entity Bean
  Stateless Session Bean不能够维持一个调用客户的状态,在一个方法调用中,St
ateless Session Bean 可以维持调用客户的状态,当方法执行完,状态不会被保持。在
调用完成后,Stateless Session Bean被立即释放到缓冲池中,所以Stateless Sessio
n Bean具有很好的伸缩性,可以支持大量用户的调用。
  Stateful Session Bean可以一对一的维持某个调用客户的状态,并且在不同的方法
调用中维持这个状态, 由于对于每一个并发用户,必须有一个对应的Stateful Sessio
n Bean,为了提高系统的效率,Stateful Session Bean可以在一定的客户空闲时间后被
写入二级存储设备(如硬盘),在客户发出新的调用请求后,再从二级存储 设备恢复到内
存中。
  多用户下,Stateless Session Bean运行效率高于Stateful Session Bean。
  Entity Bean代表数据库或另外一个企业应用系统中的数据对象,如代表数据库的一
行记录。
  和Session Bean不同,Entity Bean是持久的(persistent),允许共享访问。
  持久性(Persistence)是指Entity Bean的状态不依赖于应用服务器而存在。因为En
tity Bean是底层数据库记录的映像,会和数据库记录保持同步,所以,即使当应用服务
器崩溃或停止运行,Entity Bean的状态还会保存在数据库中,不会丢失。  
  按持久性划分,Entity Bean分为以下两种:
  Bean-Managed persistence
  Container-managed persistence
  Bean-managed persistence 指由Bean开发者自己管理Bean和它所代表的数据库记录
的同步。
  Container-managed persistence 指由Container自动管理Bean和它所代表的数据库
记录的同步,不需要Bean开发者写一行Sql语句。
二.EJB的开发部署
  开发一个EJB组件,EJB开发者必须提供以下四个文件:
  EJB Home Interface
  EJB Remote Interface
  EJB class
  ejb-jar.xml
  EJB的home interface定义了一些方法供EJB客户端create, remove和find EJB对象

  EJB remote interface定义了EJB的业务方法,EJB所有的业务方法必须在remote i
nterface定义才能够被客户端访问。
  EJB开发者在EJB class中实现在EJB Remote Interface中定义的业务方法。
  ejb-jar.xml包含该EJB组件的配置信息。
  EJB部署者用应用服务器提供者提供的部署工具将一个开发完整的EJB组件部署到应
用服务器中。
  Apusic 对EJB的支持
  Apusic Application Server完全支持EJB1.1规范,Apusic还提供完整的图形界面部
署工具:Apusic Deployer,使您可以方便地调整EJB组件的各种部署参数,并将EJB组件
迅速部署到Apusic Application Server中。
  EJB 是由Sun公司提出的基于Java的面向对象的组件标准,和原来的JavaBean不同,
EJB组件包含一定的业务规则,运行在服务器端。在目前的企业计算环境中,EJB和com,
CORBA并列三大组件标准。
  EJB体系结构中的六个角色
  EJB规范定义了完成一个基于EJB组件的分布式应用所需要的六个角色,这六个角色
可以由不同的厂商来担当,也可以某个厂商担当多个角色。这六个角色是:
  Enterprise Bean Provider EJB组件开发者负责编写EJB组件,EJB组件开发者是应
用领域的专家。
  Application Assembler 应用组合者负责将各种EJB组合成一个完整的应用系统。
  Deployer 部署者负责将包含EJB组件的ejb-jar文件部署到应用服务器中。
  EJB Server Provider EJB服务器提供者负责实现一些底层的系统服务,如交易管理
等。EJB服务器提供者是系统领域的专家。
  EJB Container Provider EJB容器提供者负责提供EJB组件的运行环境,EJB容器提
供者和EJB服务器提供者一般是由相同的厂商担当,提供的产品叫应用服务器。
  System Administrator 系统管理员负责为EJB服务器和容器提供一个企业级的计算
和网络环境。
  以上角色的划分保证了EJB标准的开放性和兼容性,各个角色互不依赖,也就是说,
遵循EJB规范开发的应用不依赖于任何特定的应用服务器,可以部署到任何支持EJB规范
的应用服务器中。
EJB组件的类型
  EJB组件有三种类型:
  Stateless Session Bean
  Stateful Session Bean
  Entity Bean
  Stateless Session Bean不能够维持一个调用客户的状态,在一个方法调用中,St
ateless Session Bean 可以维持调用客户的状态,当方法执行完,状态不会被保持。在
调用完成后,Stateless Session Bean被立即释放到缓冲池中,所以Stateless Sessio
n Bean具有很好的伸缩性,可以支持大量用户的调用。
  Stateful Session Bean可以一对一的维持某个调用客户的状态,并且在不同的方法
调用中维持这个状态, 由于对于每一个并发用户,必须有一个对应的Stateful Sessio
n Bean,为了提高系统的效率,Stateful Session Bean可以在一定的客户空闲时间后被
写入二级存储设备(如硬盘),在客户发出新的调用请求后,再从二级存储设备恢复到内
存中。
  多用户下,Stateless Session Bean运行效率高于Stateful Session Bean。
  Entity Bean代表数据库或另外一个企业应用系统中的数据对象,如代表数据库的一
行记录。
  和Session Bean不同,Entity Bean是持久的(persistent),允许共享访问。
  持久性(Persistence)是指Entity Bean的状态不依赖于应用服务器而存在。因为En
tity Bean是底层数据库记录的映像,会和数据库记录保持同步,所以,即使当应用服务
器崩溃或停止运行,Entity Bean的状态还会保存在数据库中,不会丢失。    
  按持久性划分,Entity Bean分为以下两种:
  Bean-Managed persistence
  Container-managed persistence
  Bean-managed persistence 指由Bean开发者自己管理Bean和它所代表的数据库记录
的同步。
  Container-managed persistence 指由Container自动管理Bean和它所代表的数据库
记录的同步,不需要Bean开发者写一行Sql语句。
EJB的开发部署
  开发一个EJB组件,EJB开发者必须提供以下四个文件:
  EJB Home Interface
  EJB Remote Interface
  EJB class
  ejb-jar.xml
  EJB的home interface定义了一些方法供EJB客户端create, remove和find EJB对象

  EJB remote interface定义了EJB的业务方法,EJB所有的业务方法必须在remote i
nterface定义才能够被客户端访问。
  EJB开发者在EJB class中实现在EJB Remote Interface中定义的业务方法。
  ejb-jar.xml包含该EJB组件的配置信息。
  EJB部署者用应用服务器提供者提供的部署工具将一个开发完整的EJB组件部署到应
用服务器中。
Apusic 对EJB的支持
  Apusic Application Server完全支持EJB1.1规范,Apusic还提供完整的图形界面部
署工具:Apusic Deployer,使您可以方便地调整EJB组件的各种部署参数,并将EJB组件
迅速部署到Apusic Application Server中。
三. Java的EJB技术代表的是一种前沿技术,它使得复杂的多层结构应用系统的开发变
得容易,下面则分析了EJB构件模型的体系结构、技术特点及应用前景,以及和其它相关
技术的比较。
1、EJB{Enterprise JavaBeans}技术
  98年3月在San Francisco召开的JavaOne98开发者大会上,Sun公司正式 发布了业界
期待已久的EJB1.0版规范说明,在众多的大公司和开发人员中引起了巨大的反应,这标
志着用Java开发企业级应用系统将变得简单。这次Ja- vaOne大会也被称之为"EJB展览会
",许多公司纷纷表示要推出有关EJB的 产品,已经推出或正准备推出EJB产品的公司有
:Sun、IBM、Inprise、BEA、 Gemstone、Informix、NCR、Netscape、Novell、Oracle
、Persistence Progress、Secant、Sybase、Symantec等。目前,EJB已成为Java企业计
算平台的核心技术,今年5月10日Sun公司发布了EJB1.1版本规范说明草案,对1.0版本
中的一些特征作补充说明和改进。
  Java平台包含许多用于开发企业级的、多层体系结构的、分布式应用系统的关键技
术,如Java RMI JDBC、JNDI、Java管理API(JMAPI)、Java消息服务(JMS)、Java事
务服务(JTS)、EJB等,每种技术都有各自不同的特点,本文主要讨论在企业级应用系
统中极为重要的EJB技术。
  Sun公司发布的EJB规范说明中对EJB的定义是:EJB是用于开发和部署多层结构的、
分布式的、面向对象的Java应用系统的跨平台的构件体系结构。采用EJB可以使得开发商
业应用系统变得、容易,应用系统可以在一个支持EJB的环境中开发,开发完之后部署在
其它的环境中,随着需求的改变,应用系统可以不加修改地迁移到其它功能更强、更复
杂的服务器上。
  在分布式应用系统的开发中,采用多层体系结构的方法有很多优点,如增加了应用
系统的可伸缩性、可靠性、灵活性等。因为服务器端构件可以根据应用需求迅速地加以
修改,且构件在网络中的位置和 应用无关,因此系统管理员可以很容易重新配置系统的
负载。多层体系结构非常适合于大数据量的商业事务系统,特别是在基于Web的应用中,
需要多层体系结构支持瘦客户机及浏览器的快速applet下载。
  通常一个多层体系结构的企业级应用系统的开发非常复杂,因为涉及到很多事务处
理,姿态管理,多线程,资源调度,安全性操作以及其它许多底层的细节。EJB简化了多
层体系结构应用系统的开发过程,使企业计算的开发人员专注于应用系统的解决方案,
而不需将过多的精力放在底层的计算细节,而且开发的组件能够运行于所有支持四B的环
境之中,具有可复用性。
  一个开发商可以开发一个新的支持EJB的执行系统,但通常的做法是供应商对已有的
系统进行政进以支持EJB,可以进行改进以支持EJB的系统包括:
  · 数据库数理系统,如Oracle,Sybase,DB2等;
  · web应用服务器,如Java Web Server, Netscape enterprise Server,Oracle 
Application Server等;
  · CORBA平台,如Iona Orbix/OTM,Borland VisiBroker/IT3等;
  · 事务处理监控器,如IBM TXSeries(CICS and Encina),BEA公司的Tuxedo等;

  · 构件事务服务器,如Sybase Jaguar CTS 或 Microsoft Transaction Server等

2、软构件模型
  软构件模型的思想是创建可重用的构件并将其组合到容器中以得到新的应用系统,
软构件模型定义了构件的基本体系结构、构件界面的结构、和其他构件及容器相互作用
的机制等。利用软构件模型规范说明,构件开发人员开发那些实现了应用系统逻辑的构
件,而应用系统开发人员把这些预先开发好的构件组合成应用系统。软构件模型思想已
经在软件开发界迅速流行,因为它可以达到以下这些目的:复用、高层开发、简化开发
过程,降低开发费用,提高所开发产品的质量等。
  有两种类型的软构件模型一一客户端构件模型和服务器端构件模型。客户端构件模
型如JavaBeans是专门用于处理程序的表示(presentation)及用户界面问题的;服务器
端构件模型如EJB则向面向事务的中间件提供基础设施。
  服务器端构件模型把构件模型的开发和中间件联系在一起。企业级应用系统的中间
件以其复杂性著称,它不仅涉及到应用逻辑、并发性和伸缩性问题,也涉及到如何把不
兼容的系统组合在一起的问题。服务器端构件模型解决了中间件开发的复杂性问题,它
使得中间件开发人员集中于应用系统的逻辑部分,而不用处理同步、可伸缩性、事务集
成、网络、分布式对象框架等一些分布式应用系统中存在的复杂的细节问题。EJB构件模
型如图1所示:
   EJB Server负责与操作系统有关的底层细节,诸如和其它组件或系统的通讯协议
、多线程、负载平衡等,EJB Container提供EJB的生存环境和各种服务(如Transactio
n Server),EJB Container和Server共同组成了EJB运行环境。
  通过使用RMI(Remote Method Invocation),,EJB支持远程的客户端存取。RMI产
生一个对象,这个对象被安装在客户机系统中,作为存取服务器对象的代理对象,它使
得服务器的位置对于客户机来说是透明的,EJB开发人员为每一个可存取的接口定义一个
Java远程接口。
  通过使用IIOP协议(Interne InterORB Protocol ),EJB也可以和其他的非Java客
户机进行通讯,IIOP允许EJB系统和CORBA的集成,EJB可以存取CORBA服务器,CORBA客户
机也可以存取EJB服务器。 EJB构件模型给开发者提供的支持包括以下一些特征:
  · 可重用的构件
  · 可伸缩性
  · 资源管理
  · 事务支持
  · 并发性管理
  · 安全性管理
  EJB构件与Container之间有统一的界面,每一个EJB构件都可以运行在所有的运行环
境中。在EJB构件模中有两种类型的EJB��session bean和entity bean,这两种类
型的EJB代表了两种不同类型的事务逻辑的抽象。Session bean是短暂的对象,运行在服
务器端,并执行一些应用逻辑处理,它由客户端应用程序建立,并仅被该应用程序所使
用,其数据需要自己来管理,当系统停机后,session bean 不会再被恢复。Entity be
an 是持久的对象,可以被其他对象调用,entity bean必须在建立时确定一个唯一的标
识,并提供相应的机制允许客户应用程序根据entity bean标识来定位bean实例,多个用
户可以并发访问entity bean,当系统停机时,entity bean可以被恢复。Entity bean在
EJB1.0规范中可选的特征,但EJB技术发展非常快,在EJB规范说明1.I版本的草案中,
已经规定entity bean是必须实现的特征,而不再是可选的特征。
  需要注意的是,对于不同的EJB服务器来说,其对客户机的格式的要求是不同的,例
如,客户机和服务器建立连接的方式随服务器的不同而不同,但客户机的这些差异并不
影响EJB的跨平台性。
3、EJB构件模型的特点
  在EJB1.O规范说明中,列出了设计EJB构件模型的目标,其中的一些如下:
  · EJB将成为用Java语言开发分布式的、面向对象的企业级应用系统的标准构件体
系结构,EJB使得通过组合构件得到分布式应用系统成为可能。
  · EJB使得应用系统开发变得容易,应用系统开发人员不需要理解底层的事务处理
细节、状态管理、多线程、资源共享管理、以及其它复杂的底层API细节。
  · EJB遵循Java的"write once,run anywhere"的思想,一旦一个EJB开发完成之后
,就可以部署在任何支持EJB的平台上,而不需要重新编译或对源代码进行修改。
  · EJB定义了一个协议,使得用不同供应商提供的工具开发和部署的构件能在运行
时互操作。
  · EJB体系结构和已有的服务器平台、其它的Java APL、CORBA等兼容。
  · EJB将支持enterprise Beans和其它的非Java应用系统的互操作性。
  采用EJB开发应用系统有很多优点,如:(1)标准的Java技术便利应用系统可以在
许多不同的服务器平台上运行;(2)修改应用系统变得容易,对单个构件进行增加、修
改、删除等操作不会对应用系统体系结构产生很大影响;(3)应用系统经过划分之后,
使得构件之间相互拙立,又可以相互协作,提供给用户的是该用户所需要的构件:(4)
应用系统的开发变得容易,基本上是即插即用的方式;(5)应用系统从本质上说是可伸
缩的,可以运行在多线程、多处理机的环境中;(6)UB可以在新的应用系统中得到重用
,减少了新系统的开发时间。
  当然,和其它的新技术一样,EJB也存在一些缺点,主要有:(1)EJB的数量可能非
常多,以致在软件开发库中很难对这些EJB进行跟踪和管理;(2)如果应用开发人员不
能正确地使用EJB,可能导致不恰当的应用系统设计,结果使得应用系统的总体性能下降
;(3)除非WM及编译器的性能得到提高,否则EJB应用系统的性能仍将是个问题;(4)
由于EJB技术出现时间不长,目前可用的EJB还不多,要想得到大量的商业性EJB还需要一
段时间。
  
四、EJB和其它技术的比较
  4.1 EJB和JavaBeans的比较
  很多人往往把JavaBeans和EJB混淆起来,JavaBeans提供了基于构件的开发机制,J
avaBeans可以在多个应用系统中重用,开发者可以通过属性表或通过定制的方法来定制
JavaBean。多个JavaBean可以组合在一起构成Java applet或Java应用程序,或建立新的
JavaBean,JavaBean容器可以根据JavaBean的属性、方法、事件的定义在设计时或运行
时对JavaBean进行操作。
  在JavaBean构件模型中,重点是允许开发人员可以在开发工具中可视化地操作构件
,为此,JavaBean详细地描述了API的细节,以及构件之间事件注册和发送,属性的识别
和利用,定制,永久性等细节。
  EJB是一种非可视化的构件,完全位于服务器端,规范说明详细说明了EJB容器需要
满足的需求以及如何和EJB构件相互协作。EJB可以和远程的客户端程序通讯,并提供一
定的功能,根据规范说明,EJB是client/Server系统的一部分,如果不和客户端程序交
互,EJB一般不执行具体的功能,EJB和JavaBean的一个重要区别是EJB必须在网络计算环
境下使用才有意义。
  EJB的重点是给出服务框架模型,以保证Java构件可以进行可移植性的部署,因此,
在EJB规格说明中,并没有提到事件,因为典型的EJB构件不发送和接收事件,EJB规范说
明中也没有提到属性。和一般的JavaBean一样,EJB是高度可定制的,对EJB进行定制不
需要存取源代码,但对EJB可以进行定制不是在开发阶段,而是在部署阶段用部署描述符
进行定制。
  需要说明的是,JavaBean不仅可用于客户端应用程序的开发,也可以用于服务器端
应用程序的开发,但和EJB的区别是,如果用JavaBean创建服务器端应用程序,还必须同
时实现服务框架,在多层结构分布式应用系统中,服务框架的实现是非常繁琐的,对于
EJB来说,服务框架已经提供,因此大大简化了系统的开发过程。
  4.2 EJB和CORBA
  CORBA是目前分布式对象处理的事实工业标准,大部分厂商都宣布支持CORBA标准,
同样,在EJB规范中,也考虑到对CORBA的支持。规范主要规定如下:
  · 一个CORBA客户机(用CORBA支持的语言写的程序)可以存取基于CORBA的EJB服务
器上的构件。
  · 一个客户机在一个事务过程中可以同时调用CORBA和EJB对象。
  · 一个事务可以同时利用多个由不同开发商提供的,基于CORBA的EJB服务器。
  为了保证多个开发商之间的基于CORBA的EJB产品之间的互操作性,规范说明定义了
EJB到CORBA的映射,分为四个部分:
  1、分布映射--定义了EJB和COR-BA对象之间的关系,以及EJB规范说明中定义的Ja
va RMI到OMG IDL的映射。
  2、命名映射--说明了如何利用COS命名服务来确定EJBHome对象。
  3、事务映射--定义了EJB的事务支持到OMG Object Transaction Service(OTS)v
1.1的映射。
  4、安全性映射��定义了EJB中的安全性特征到CORBA安全性的映射。
  映射确保了不管哪一种类型的客户机,通过生成相同的字节流,可以和基于CORBA的
EJB服务器进行互操作。
  从以上的论述中可以知道,对于EJB服务器来说,有两种类型的客户机可以使用EJB

  1.EJB/CORBA客户机��一个使用EJB API的Java客户机。客户机利用JNDI定位
对象,利用HOP协议上的JavaRMI来调用远程方法,其中CORBA IDL的使用是隐含的,也就
是说,开发人员只使用Java代码,开发客户机程序时可以不必了解CORBA及IDL知识。
  2.纯CORBA客户机��用CORBA IDL支持的任何语言写的客户机。客户机用COS
命名服务来定位对象,用CORBA IDL来调用远程方法,用对象事务服务OTS来执行事务,
其中开发人员要创建一个IDL文件,即CORBA IDL的使用是显式的。
  4.3 EJB和网络计算
  由Beans构造的应用系统可以根据用户的需求分解成不同的构件,根据用户当前所需
要的功能提供相关的构件,并随着用户新的需求随时下载新的构件,而用户没有用到其
功能的构件可以驻留在服务器上,这就是网络计算所倡导的概念。
  很多人并没有完全理解Java的概念,他们认为为了在一个客户端上运行Java程序,
需要把一个庞大的、可能达几兆字节的Java应用程序一次性通过网络传输到客户端,事
实上,这也是一些开发人员计划用Java开发应用系统时易犯的错误。
  把Java应用于服务器端的应用系统可以真正体现Java的威力,EJB是Java的服务器端
构件模型,该模型保证开发出来的构件可以被部署在任何支持EJB规范说明的系统中,即
使该系统是由不同的开发商提供的。在网络计算环境中利用Java的最好途径是由EJB提供
服务器端的构件,而由JavaBean提供客户端的构件,两者结合在一起,将向"网络就是计
算机"之路迈出一大步。
五、总结
  对象技术、构件技术、快速应用开发等是计算机界的热门话题,Java的EJB技术的主
要思想就是让"恰当的专家做恰当的事情",应用领域的开发人员将开发精力放在应用逻
辑方面,而不用考虑底层的计算技术;而计算机专业开发人员去处理底层的计算技术细
节,而不用考虑应用领域的专业知识。
  EJB计算技术代表的是一种前沿技术,它使得复杂的多层结构应用系统开发变得容易
。EJB技术建立在已取得极大成功的Java语言之上,采用EJB技术能有效地进行软件复用
,提高开发人员的效率,降低软件的开发和维护成本,提高软件的质量,控制所构建系
统的复杂性。EJB技术将使得Java在企业计算中的地位得到加强,为基于Java的应用系统
提供了一个框架,和目前的许多系统和模型相比,EJB具有许多优越性,种种迹象表明,
EJB有可能成为多层结构分布式应用系统的服务器端构件模型的首要选择。
 
----------------------------------------------------------------------------
----
我是:  读者  出版商  销售商
读者评价:
    评论:
[点此查看他人对本文的评价]
推 荐 给 朋 友
您的称呼:     您的昵称:
您的Email:     您朋友的Email:
(以下是预设的信件内容,可根据您的需要修改)
近来好吗?
我在浏览中国互动出版网时,看到对你有用的文章(http://www.china-pub.com/comput
ers/eMook/0648/info.htm), 特推荐给你,希望对你有所帮助。
[关闭此窗口]
  
--
               我怕水,我怕谁?

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.247.254]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:205.542毫秒