UML软件工程组织

EJB概述:分布式多层体系结构(2)
作者:苏洋 本文选自:赛迪网 2002年11月25日

与数据库记录在数据库表中的存在方式类似,在实体组件中定义了用于标识实体组件的主键(Primary Key)对象。该主键与标识数据库表记录的主键相对应,代表同一数据库记录的实体组件的主键值是相同的。客户端应用程序能够利用主键来定位EJB容器中的实体组件,进而定位实体组件表示的数据库记录。

按照实体组件的生命期管理方式,EJB规范将实体组件划分为组件管理持久性(Bean-Managed Persistence,BMP)和容器管理持久性(Container-Managed Persistence,CMP)两种类型。在组件部署过程中,由部署工具为容器管理持久性类型EJB组件的生命期方法编写组件状态转换代码,EJB容器调用这些方法实现组件的状态转换。相对而言,组件程序设计人员必须为组件管理持久性类型EJB组件编写控制组件的创建、删除、激活、关闭等生命期测量的SQL代码。

◇消息驱动组件

消息驱动组件(Message Driven Bean)是EJB2.0规范中引入的新型组件,用于在EJB容器中提供一种响应外部事件消息的组件类型机制。

在引入消息驱动类型EJB组件之前,基于J2EE的分布式应用对于事件消息的处理方式是利用独立的Java事件处理程序来监听来自于客户端应用程序、EJB组件、JSP组件甚至是J2EE平台之外事件源发出的符合Java消息服务(Java Message Service,JMS)规范事件消息。引入消息驱动类型EJB组件后,部署在EJB容器中的消息驱动类型EJB组件利用组件中定义的OnMessage方法监听来自事件源的消息并做出反映,进而能够调用其它类型的组件来对消息进行响应。消息驱动类型EJB组件作为EJB容器中的事件监听器(Listener),可以在接收到来自JMS消息队列中的事件消息后由EJB容器来激活消息驱动组件对象实例。

消息驱动组件是服务器端的无状态类型组件。该类型的组件只有组件类定义,没有类似于会话组件和实体组件的Home接口和Remote接口。

EJB规范定义的开发者角色

EJB组件体系结构是基于J2EE规范构建的应用软件系统的主要部分。完整J2EE应用的核心内容是封装了商务逻辑的EJB组件。

按照EJB2.0规范的定义,基于EJB规范的分布式计算体系结构由六个角色组成,这六个角色可以是软件开发团队、系统软件供应商、应用软件集成商等,每个角色所完成的工作必须遵循EJB规范,以保证彼此之间的兼容性。这六个角色分别是:

◇EJB组件开发者

EJB组件开发者(Enterprise Bean Provider)负责开发封装有商务规则的EJB组件。EJB组件开发者定义EJB组件的Home接口和Remote接口、编写组件类并且提供部署EJB组件的部署描述文件(Deployment Descriptor)。EJB组件开发者是商务应用开发领域的专家,不需要精通系统级编程方法以及系统级的组件事务管理、同步、安全性、分布式计算等细节。

◇部署者

部署者(Deployer)负责将打包后的EJB组件部署到EJB服务器等应用环境中。部署者应根据EJB组件的部署描述文件中声明的对各种类型的资源,如数据库、安全性管理等的需求来配置EJB服务器来为组件提供服务。部署者是EJB应用环境方面的专家。

◇应用组装者

应用组装者(Application Assembler)负责将各种类型的EJB组件组合成一个完整的应用系统,因此应用组装者必须明确待组装EJB组件的Home接口和Remote接口定义的详细内容。

◇EJB服务器提供者

EJB服务器通常由操作系统开发商、中间件开发商或数据库开发商来提供。因此,EJB 服务器提供者(EJB Server Provider)是应用软件系统领域的专家,精通分布式系统管理、分布式对象管理及其它系统服务。

◇EJB容器提供者

EJB 容器提供者(EJB Container Provider)是系统级的编程专家,其工作主要集中于开发可伸缩的,具有事务、交易和安全管理功能的集成在EJB服务器中的EJB容器。EJB容器提供者为EJB组件开发者提供了一组标准的API来访问EJB容器,使EJB组件开发者不需要了解EJB服务器中的各种技术细节就能够开发出部署在EJB容器中的EJB组件。

在实际应用中,通常假定EJB服务器提供者和EJB容器提供者来自同一软件开发商,因而没有定义EJB服务器提供者和EJB容器提供者之间的接口标准。

◇系统管理员

系统管理员(System Administrator)负责为EJB服务器和EJB容器提供一个企业级的计算环境并利用EJB服务器和EJB容器提供的监测管理工具监测EJB组件的运行情况。

EJB容器

企业信息系统业务层中的EJB组件通常部署在被称为EJB容器的应用服务器中,由EJB容器提供EJB组件的状态管理、事务管理、线程管理、远程数据资源访问、连接管理和安全性管理等系统级服务。所有的EJB组件实例都运行在EJB容器中,由EJB容器控制着EJB组件的生命期。EJB组件可以被定制为提供安全和事务处理等各种系统级服务,但这些服务特性在本质上不属于EJB组件类,而是由部署EJB组件的容器来提供和实现的。

按照EJB规范编写的任何EJB组件均可以部署到任何一个与规范兼容的EJB容器中,可以根据应用系统的需要配置EJB容器来对组件的事务或安全性进行管理。在EJB组件部署过程中将业务逻辑的处理功能与底层的应用系统服务逻辑分开,使得EJB容器可以在运行时(Runtime)创建和管理EJB组件。

在11月28日的EJB系列讲座的第二讲中,我们将详细介绍EJB组件的基本结构。

(责任编辑 Sunny)



版权所有:UML软件工程组织