|
3.2 EJB角色
围绕EJB应用(包括组件和容器)的开发和部署周期,EJB规范为EJB架构定义了七个角色,每个角色由不同的单位承担。EJB规范通过定义角色者之间的“合约”,来确保角色间的正确协作。在某些时候,某个组织可以同时具有多个角色。比如某个公司会提供包含EJB服务器和容器的产品,那么它同时充当着EJB服务器提供者和容器提供者两种角色。因此,这种角色划分并不是绝对的。
以下是EJB规范2.0中定义的EJB角色。
1.EJB提供者
EJB提供者,即EJB的开发者。对于多数企业级应用开发者来说,都属于这个角色。EJB提供者的产品是个包含一个或多个EJB的打包文件(即ejb-jar文件)。EJB提供者负责业务逻辑方法的
Java语言实现;定义EJB的远程和主接口方法和EJB的部署描述符。部署描述符包括EJB的结构信息(如EJB类的名字)和EJB用到的其它所用资源的描述信息。
EJB提供者是个应用领域的专家。负责开发实现业务任务和逻辑实体的可重用的EJB。不必是系统级的程序专家,也不必考虑程序的事务并发性、安全性、分布性等问题,这些问题都是由容器解决的。
2. EJB应用装配者
应用装配者把EJB装配成更大的可部署的应用单元。有时这个工作也由EJB提供者完成。EJB装配者的输入是EJB提供者生产的一个或多个ejb-jar文件,输出是一个或多个包含EJB和应用装配信息的ejb-jar文件。前者ejb-jar文件的扩展名一般是JAR(Java
Archive),后者ejb-jar文件的扩展名可以是WAR(Web Application Archive)或EAR(Enterprise
Application Archive)。应用装配者把应用装配信息插入到部署描述符中。
应用装配者也可以把其它应用类型的组件(如JSP,JavaServerPage)装配到EJB应用中(这就象在PetStore例子中看到的那样)。
应用装配者工作的对象是EJB部署描述符和EJB客户端视图合约。虽然他必须熟悉EJB的远程接口和主接口,但他不必具有任何实现EJB开发的知识。
3.EJB部署者
部署者把从EJB提供者和应用装配者那里获取的一个或多个ejb-jar文件中EJB部署到一个指定的环境。有时这个工作也由EJB提供者完成。这个环境包括特定的EJB服务器和容器。
部署者通常会使用EJB容器提供者提供的部署工具(如 WebLogic Server提供的weblogic.ejbc工具),来为EJB提供需要的外部资源并绑定这些资源,同时必须符合应用装配者定义的指令。
部署者的产品是定制到特定环境的EJB,这个产品只能被部署在那个特定的容其中。也就是说,EJB的部署是与服务器平台相关的。
部署者是应用环境的操作专家,负责与EJB部署相关的工作。如:他负责把应用装配者定义的安全角色和EJB部署环境中的用户组及账号对应起来,实现它们的映射。
EJB容器提供者提供的部署工具用来完成部署工作,这个过程分两个阶段:
(1)部署者首先生成附加类和接口,确保容器能管理EJB的运行。这些附加的类是和特定容器相关的。
(2)部署者完成EJB和附加类及附加接口的安装。
4. EJB服务器提供者
EJB服务器提供者,即生产EJB服务器的厂家。目前符合EJB规范的服务器产品有十几种,如 WebLogic Server,Websphere,iPlanet等。EJB服务器提供者是分布式事务、分布式对象和其它低级系统级服务的专家。一个典型的EJB服务器提供者可能是操作系统生产者、中间件生产者或数据库生产者。
目前EJB架构假定EJB服务器提供者和EJB容器提供者是同一个生产者,因此没有定义EJB服务器提供者的任何接口需求。
5. EJB容器提供者
容器提供者提供了:
(1)部署EJB需要的部署工具。
(2)EJB的运行环境。
从EJB的角度看,容器是EJB的运行环境。容器为EJB提供了事务管理、安全管理。分布式网络管理、资源管理等服务。
EJB架构定义的EJB容器提供者负责EJB容器和EJB服务器的实现。EJB规范没有定义EJB容器和服务器之间的接口,由厂家来实现EJB容器和服务器的划分。
容器提供者需要系统级的编程,容器提供者的重点是开发出可伸缩的、安全的、事务处理的容器,并把它集成到EJB服务器中。容器提供者把EJB和EJB服务器分离开,并在EJB和容器之间提供了简单、标准的API。这个API就是EJB的容器合约。
容器提供者通常会提供允许系统管理员监视和管理容器和运行在容器中的EJB的工具。
通常把具有EJB容器、EJB服务器和Web服务器功能的产品叫做应用服务器。它为开发企业级应用提供了一个完整的平台。
6. 管理器提供者
在EJB的使用和开发中,经常会遇到持久性的概念。所谓持久性,是指通过辅助的永久性的存储设备,如数据库或文件等,把Java对象的状态和对应的存储设备映射起来,当Java对象的状态发生改变时,存储的映射也随之改变。即使在Java对象消失后,存储设备中依旧保存着Java对象的状态。当这个Java对象重新实例后,它就会依然保持以前的状态,这就是Java对象的持久性。
在EJB规范中定义了具有持久性的EJB——实体EJB。根据对持久性管理方式的不同,又把实体 EJB分成容器管理持久性的 EJB(CMP
EJB)和Bean管理持久性的EJB(BMP EJB)。
一般情况下,持久性管理器包含在容器管理器中。对于EJB提供者来说,不必了解它的细节。
对于容器管理持久性的实体EJB来说,持久性管理器负责安装在容器内的实体EJB的持久性管理。在部署阶段使用持久性管理器提供者的工具,可以生成代码,实现数据从实体EJB到数据库和应用程序的转换。
容器管理器管理实体Bean及其用到的对象的持久性和这些对象引用的完整性。容器管理器负责容器管理持久性实体EJB的finder方法和select方法的执行。
目前的EJB架构中没有完整定义容器和持久管理器间的接口,由厂家来自行定义。
7.管理者
系统管理者负责配置、企业级计算、包括EJB服务器和容器的网络设施的系统管理。同时,系统管理者监视部署在容器中的EJB的运行。
EJB架构没有为系统管理定义合约。系统管理通常使用EJB服务器和容器提供者提供监视管理工具来完成这些工作。
通常,应用服务器会提供系统管理的控制台工具(如 WebLogic Server中的 Console)。
|