第二章 系统总体设计
2.1 Web应用服务器DM WAS功能需求
Web应用服务器是多层体系结构中的关键部件,Web应用服务器有其共有的功能特性,包括客户端连接管理、状态和会话管理、业务逻辑处理、数据库连接、安全管理和事务管理等。
具体到JAVA中,一个符合JAVA规范的Web应用服务器需要提供的服务除了要满足一般需求外,还有其特殊之处,主要表现在如下几个方面。
1.Web容器服务
Web容器负责加载和执行Web应用程序,接受Web请求,返回动态的Web页面。Web容器中的组件可使用EJB容器中的组件完成复杂的业务逻辑。
2.EJB容器服务
负责管理EJB组件的生存期和EJB组件的状态,调度EJB实例池以及池中的EJB组件,管理执行EJB规范的Java类和EJB组件服务的接口插入类。
3.命名服务
服务器要提供JNDI的实现以便实现相关资源的绑定和查找。 4.事务服务
负责处理分布式事务,提供对EJB组件的事务管理。在JAVA中,一个事务资源可能是JDBC连接、JMS会话或者是JCA资源适配器的连接。事务之间的联系是隐含的分布式请求传递。该服务要实现JTA规范,允许从客户端的应用软件中明确的开始和结束事务。
5.数据库服务
负责处理数据源对象。数据源是为了处理数据库连接的标准JDBC管理对象。数据库服务在服务器中创建、加载数据源,同时负责管理连接池。
6.安全服务
执行JAVA规范指定的访问服务器组件和应用程序的授权机制。
2.2系统架构分析
软件架构的设计是决定软件系统的性能和可扩展性等质量指标的重要因素。在基于JAVA的Web应用服务器的实现产品中,开源的Tomcat应用服务器在系统架构方面给了我们很多有益的启迪。 2.2.1 Tomcat体系结构分析
Tomcat是Sun公司官方推荐的Servlet和JSP容器。Tomcat从4.0版本开始,在体系结构上进行了调整,与4.0之前所采用的基于模块的链式控制结构相比,Tomcat在4.0之后采用了面向组件的设计方式,各部分功能都是由组件提供的,控制流程通过组件之间的通讯完成。
设计组件时应该从不同的问题领域,站在不同的观点上分析,把每一种属性分别考虑。例如Tomcat中的FileLogger组件,它用于把系统日志信息保存到文件系统中。按照这种模式分析,我们从不同的角度看待它:它如何启动服务、停止服务和进行通讯?它的具体的功能有哪些?别的组件可以发给它哪些消息?基于这些考虑,FileLogger组件实现了两种接口:Lifecycle(生存期接口)和LoggerBase(基本功能接口)。Tomcat中使用了Inversion of Control(IOC)模式,其意思是组件总是通过外部进行管理的。组件需要的信息总是来源于外部,实际上组件在生存期的各个阶段都是被创建它的组件管理的。在Tomcat4.0中就是通过这种组件之间的相互控制和调用实现各个功能的。
Tomcat的基本流程是首先通过解析XML格式的配置文件(server.xml和web.xml),获得系统的配置和应用信息,然后加载定制的组件模块提供各种系统服务。Tomcat的常用组件包括:Server、Service、Connector、Engine、Host、Context。
Server代表整个Tomcat的Catalina Servlet容器,它包含一个或多个Service;Service由一个或者多个连接器(Connector)以及一个共享的处理引擎(Engine)组成,Engine负责处理所有Connector所获得的客户请求;Connector在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得响应结果,并返回给客户端;Engine代表一个Service所属的请求处理机,它接受所有Connector传递过来的客户端请求,将处理结果返回给Connector,由
Connector将最终响应返回给客户端,Engine必须配置在Service组件下;Engine下可以配置多个Host,每个Host都有一个域名,当Engine获得一个请求时,它把该请求匹配到某个Host上,把请求交给该Host来处理;Host代表一个虚拟主机,每个虚拟主机和某个网络域名相匹配。每个虚拟主机下都可以部署一个或者多个Web应用程序,每个Web应用程序对应于一个Context,有一个Context路径;一个Context对应于一个Web应用程序,一个Web应用程序由一个或者多个Servlet组成。Tomcat整个系统的功能都是通过组件实现的,组件之间的通讯构成了系统的运行控制机制,具有很高的复用性和可扩展性。 2.2.2组件技术
组件技术越来越广泛地应用于软件系统设计中,它是为提高软件的可重用性而提出的,其思想是将软件按一定的标准封装成组件,对外提供一组访问接口,指明组件与容器或与其它组件交互的机制。面向组件的技术(Component-Oriented,CO)是比面向对象的技术更高一层的抽象,它融合了面向对象的优点,加入了安全性和可扩展的模块设计,可以更好的映射问题域空间。采用面向组件的设计会带来很多好处,可以提高复用性、降低耦合度和通过组装构成系统等。
应用服务器系统吸取了组件技术所提供的优点,采用开放的层次组件式结构,系统的各种资源均以服务的形式提供,服务按功能划分层次,形成不同组件,服务与系统核心之间定义公共接口标准,所有服务采用标准接口实现与底层通讯。采用这种层次式组件结构,组件通过核心层定义的公共标准接口实现与底层通讯,系统功能作为组件式服务部署和管理,整个系统可以在不影响现有应用的基础上,实现对组件的修改和扩展。
JAVA是一个基于组件的多层网络应用体系结构,它定义了一套标准化的组件,并为这些组件提供了完整的服务,这意味着应用程序的不同部分可以运行在不同的设备和系统上。其核心是容器,容器提供了组件服务的运行环境和对企业信息系统的标准访问,还提供了配置和部署应用程序行为的机制。
2.3 DM WAS体系结构
2.3.1服务器总体设计框架
JAVA平台从功能上大体可以划分为两个大的组成部分:Web服务器和EJB服务器。Web服务器主要是为JSP和Servlet提供运行平台,实现企业应用程序的Web表示层;EJB服务器主要是提供EJB组件的运行环境,为业务逻辑事务层服务。各个厂商一般会根据需要有选择地实现全部或部分JAVA规范,如OpenEJB是一个实现了EJB规范的纯EJB容器,Tomcat是一个主要提供Servlet和JSP服务的Web容器,当然它也实现了JNDI、连接池、事务处理等相关服务。
在总结国内外Web应用服务器研究的基础之上,结合具体的需求分析,我们提出如下系统总体框架,如图2.1所示。
图2.1 DM WAS总体框架图
由图中可以看出,整个Web应用服务器的功能是由一个个的组件提供的。采用组件技术,能够提高系统的可扩展性。整个系统由11种组件组成。
1.服务器启停组件
服务器启停组件实现服务器的启动与停止。服务器启动时,完成如下一些工作: