分布式企业应用程序的交互软件组件需要底层的基础结构服务,这些服务允许分布式组件相互通信、协调各自的工作、实现安全访问,等等。本节说明多个 Java ES 组件在提供这些基础结构服务时所扮演的重要角色。
在设计分布式软件系统时,无论系统是主要由自定义开发的组件构成,还是由现成可用的 Java ES 组件构成,都需要整合多项基础结构服务。这些服务在多个级别运行。
解决方案体系结构的基础结构服务依赖性如图 2–2 中所示。此图显示的级别是图 1–1 中基础结构服务层的扩展视图。图 2–2 中服务的分层结构以及它们之间的依赖性构成解决方案逻辑体系结构的一个重要维。这些基础结构服务为 Java ES 系统服务组件提供了主要的理论根据(参见系统服务组件)。
下图所示的服务一般可分为三大组:底层平台服务、高层应用程序服务以及一组中间件服务(因其位于其他两个分组之间而得名)。
下面介绍了不同的基础结构服务级别,并在有关地方引用了 Java 编程语言工件。服务级别按从最低到最高的顺序列出,如图 2–2 中所示:
操作系统平台。为在计算机上运行的任何进程提供基本支持。操作系统管理着物理设备、内存、线程以及其他用以支持 Java 虚拟机(JVMTM 机)的资源。
网络传输。为不同计算机上运行的分布式应用程序组件间的通信提供基本联网支持。这些服务包括对诸如 TCP 和 HTTP 等协议的支持。其他较高级别的通信协议(请参见消息层)依赖于这些基本传输服务。
消息传送。为应用程序组件间的同步及异步通信提供支持。同步消息传送是实时消息收发;它包括 J2EE 组件间的远程方法调用 (Remote Method Invocation, RMI) 以及 SOAP 与 Web 服务的交互。异步消息传送是指这样的一种通信:消息的发送不依赖于使用者是否已准备好立即接收该消息。异步消息传送规范(例如,“Java 消息服务”(Java Message Service, JMS) 和 ebXML)支持可靠性保障及其他消息传送语义。
运行时环境。提供任何分布式组件模型(如 J2EE 或 CORBA 模型)所需的支持。除了紧耦合分布式组件所需的远程方法调用之外,运行时服务还包括组件状态(生命周期)管理、线程池管理、同步(互斥锁定)、持久性服务、分布式事务监视以及分布式异常处理。在 J2EE 环境中,这些运行时服务由应用服务器或 Web 服务器中的 EJB、Web 和消息驱动 Bean 容器提供。
安全和策略。为安全访问应用程序资源提供支持。这些服务包括对策略的支持,策略不仅掌管着分布式资源的组或基于角色的访问,还掌管着 single sign-on(单点登录)能力。单点登录允许将通过了分布式系统中一项服务的用户验证自动应用于系统中的其他服务(J2EE 组件、业务服务和 Web 服务)。
用户协作。提供在支持企业和 Internet 环境中的用户间直接通信和多用户相互协作方面起关键作用的服务。这些服务是应用程序级业务服务,通常由独立的服务器(如电子邮件服务器或日历服务器)提供。
集成。提供用于聚集现有业务服务的服务。为访问这些服务提供一个公共接口(如在 Portal 中那样),或通过用于在生产工作流程内协调这些服务的过程引擎将服务集成在一起。集成也可在不同企业间的企业到企业交互时发生。
图 2–2 显示的服务级别反映了基础结构服务相互间的依赖性,从最低级别的操作系统服务一直到最高级别的应用程序和集成服务。每项服务一般都依赖于其下方的服务而支持其上方的服务,但是,图 2–2 并不表示严格的基础结构服务分层。较高级别的服务可以不依靠中间级别直接与较低级别的服务进行交互。例如,某些运行时服务可能直接依赖于平台服务而无需两者间的任何服务级别。此外,还可在此概念图中加入其他服务级别,如监视或管理服务。
Java ES 组件可实现图 2–2 中所示的分布式基础结构服务级别。下图显示了各系统服务组件在不同级别中的定位。
图中阴影框内的组件不是 Java ES 的组成部分。用户协作组件不属于 Java ES 组件,但常与 Java ES 组件一起部署,并在 Java ES 体系结构中使用。它们是 Sun Java Communications Suite 的一部分,本文档引用它们仅作说明之用。操作系统平台也不是 Java ES 的正式组成部分,但将它们放入图中是为了显示那些支持 Java ES 组件的操作系统平台。
一般而言,图 2–3 中所示的每个 Java ES 系统服务组件都依赖于基础结构中其下方的组件,并支持其上方的组件。这些依赖性和支持关系是设计逻辑体系结构的关键因素。
下表显示了 Java ES 系统服务组件之间的特定关系,这些组件从上到下依次列出,如图 2–3 中所示。
表 2–1 Java ES 系统服务组件之间的关系