基于Java的应用服务器的设计与实现阮彤.docx

上传人:b****8 文档编号:11953300 上传时间:2023-06-03 格式:DOCX 页数:26 大小:32.08KB
下载 相关 举报
基于Java的应用服务器的设计与实现阮彤.docx_第1页
第1页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第2页
第2页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第3页
第3页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第4页
第4页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第5页
第5页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第6页
第6页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第7页
第7页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第8页
第8页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第9页
第9页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第10页
第10页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第11页
第11页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第12页
第12页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第13页
第13页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第14页
第14页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第15页
第15页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第16页
第16页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第17页
第17页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第18页
第18页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第19页
第19页 / 共26页
基于Java的应用服务器的设计与实现阮彤.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于Java的应用服务器的设计与实现阮彤.docx

《基于Java的应用服务器的设计与实现阮彤.docx》由会员分享,可在线阅读,更多相关《基于Java的应用服务器的设计与实现阮彤.docx(26页珍藏版)》请在冰点文库上搜索。

基于Java的应用服务器的设计与实现阮彤.docx

基于Java的应用服务器的设计与实现阮彤

基于Java的应用服务器的设计与实现

阮 彤① 李 京① 冯东雷②

①(中国科学院软件研究所计算机科学开放研究实验室对象技术中心 北京 100080)

②(上海交通大学计算机科学与工程系 上海 200030)

(ruan@otcaix.iscas.ac.cn)

目前,新一代的应用服务器开始集成传统的应用服务

器与Web应用服务器的功能.例如,Sybase的EA

Server3.0包含了动态页面服务器——PowerDynamo

与组件应用服务器——JaguarComponentTransac-

tionServer.

1999年3月,Sun推出了Java2platform,

EnterpriseEdition(J2EE).J2EE面向基于Java与

Web的企业级应用开发,其包含了一个应用程序模

型、一组API以及一个参考实现.目前,大多数主流

应用服务器都开始支持J2EE,如,IBMWebSphere

3.0[3],SybaseEAServer3.5,BEAWebLogic

Server4.5[4]等.

尽管J2EE的各种兼容实现已经开始在业界使

用,但是,J2EE作为规范,本身设计存在着一些缺

点,而这些缺点与基于Web应用的体系结构,以及

分布式组件技术的使用都有着密切的关系.如何合

理使用J2EE中的各项技术,以及Java语言、EJB组

件标准给应用服务器的设计带来哪些便利与缺点

等,都是理论与实践中值得探讨的问题.

本文的第2节从Web应用的体系结构与应用

开发范型角度,剖析了J2EE的应用程序模型;第3

节指出了J2EE与EJB在版本管理上的缺陷;第4

节给出了JWebFrame——一个基于Java的轻量级

服务器的设计与实现;最后一部分比较了两个设计

各自的优缺点,展望了基于Java的Web应用服务

器的未来.

2 J2EE的应用程序模型

2.1 Web应用的体系结构

传统的3层体系结构模型是:

包含表示逻辑的

客户层,包含应用逻辑的中间层应用服务器,以及表

示事务处理与存储的数据库层.Web的出现使应用

服务器的功能发生了变化,因为此时的应用服务器

既包含了应用逻辑,又包含了表示逻辑.代表了表示

逻辑的HTML在中间层产生,又下载到客户端浏

览器.中间层的双重功能有3种实现方式:

①直接用程序设计语言编程,返回的结果是一

个Web页面,如CGI程序;

②在HTML页面中嵌入一些可执行的代码,

如ASP程序;

③分成两个文件,一个是HTML模板,另外一

个是应用逻辑,存放应用逻辑的程序运行后将结果

输送到HTML模板文件中.

微软的idc/htx组合采用的就是第3种方法.

从概念的清晰度与程序的可维护性角度来说,第3

种是最理想的方法.在J2EE中,Servlet,JSP分别

属于第1种、第2种方法.但是,如果用户将主要的

应用逻辑放在服务器端JavaBeans中,那么JSP+

JavaBeans也可以看作是第3种方法.

在J2EE中,将体系结构与开发范型等统称为

应用程序模型.J2EE的体系结构如图1所示,其被

分为4层:

①客户层,客户层可以是基于浏览器的,也可

以是普通的J2EE客户.

②Web容器层,支持基于Web的开发.包含

Web服务器、JSP、服务器端JavaBeans和Servlet.

③EJB(enterpriseJavaBeans)容器层,一个管

理和调度EJB组件的EJB服务器以及相应的EJB

池.

④EIS层,原有的企业信息系统.

图1 J2EE多层结构示意图

  从J2EE[5]的设计者角度来说,其提供给用户的

是一个灵活而又完备的解决方案:

(1)在非Web应用中,直接使用EJB组件以及

J2EE独立客户端,形成完整的基于组件的软件开发.

(2)在Web应用中,使用J2EE合适的方法是,

对于轻量级的应用,使用JSP+服务器端JavaBeans

的体系结构;对于重量级的应用,使用JSP+服务器

端JavaBeans+EJB的体系结构.JSP相对于Servlet

940计算机研究与发展2001年

大好处在于可以方便用户将表示逻辑与应用逻

辑分离.从MVC的结构来看,JSP存放表示逻辑,

服务端JavaBeans存放控制逻辑,而应用模型放在

EJB中,可能是J2EE设计者的初衷.对于习惯于使

用Java的程序员来说,使用Servlet+JavaAPI可

能是比较好的方法.

(3)在复杂应用中,用户可以使用JSP+

Servlet+JavaAPI+JavaBeans+EJB的方案,这5

种接口在使用时可以相互调用,体现了J2EE设计

的灵活性.

然而,下面两个问题会困扰J2EE的使用:

(1)应用逻辑的放置

在图1中可见,JSP与服务端JavaBeans在

Web容器中,而EJB在另一个容器中,两个容器是

通过RMI连接起来的,使用RMI调用意味着两者

是一种弱耦合关系.如果JSP、服务端JavaBeans、

EJB分别包含的是MVC中视图、控制与模型,那么

控制与模型的分离对于应用开发与调试都是不合适

的.

从理论上说,JSP,Servlet,JavaAPI,服务器端

JavaBeans,EJB都有存放应用逻辑的功能,那么,应

用逻辑如何放置就成为用户要着重考虑的问题.应

用逻辑的随意放置将降低程序的可维护性.J2EE只

是提供了一个基础平台,它的合理使用需要用户对

特定应用、特定技术的洞察.

(2)J2EE多层次、多技术并存的设计加剧了开

发的难度,降低了程序的性能.

当一个应用被分割成多个层次时,程序出错的

可能性会更大,而排错的难度也更大,当程序测试

时,需要测试的环节会更多.例如,在JSP中使用

Scriptlet调用了JavaAPI与服务器端JavaBeans,

进而又调用了EJB,那么如果执行一个JSP文件出

错,可能会是其中任何一个环节错.如果JSP文件

又具有在客户端运行的JavaScript,程序调试的难

度又增加了一个数量级.

多层结构对应用性能也带来了负面影响,在

J2EE中,JSP引擎建立在JavaServlet引擎之上,

Web容器层与EJB容器层用RMI连接,而RMI又

使用TCP/IP协议栈,这些都极大地降低了J2EE

平台的运行效率.

2.2 组件技术的使用

在J2EE中,组件技术的使用体现在两个方面:

①EJB与服务器端JavaBeans;②基于组件的开发范

型.组件技术从理论上确实具有无可辩驳的优点.其

分离了接口与实现,使得程序在二进制层次上兼容,

提高了程序的可重用性,同时,组件的初始化、调用、

清除等,都由组件服务器统一管理,提高了程序的易

管理性.组件与组件之间的耦合度低于对象与对象之

间的耦合度,提高了程序的健壮性.基于组件的开发

范型将加快软件的开发速度,提高软件的可重用性.

然而,这些优越性在J2EE中并不能得到很好

的体现.首先,EJB标准完全基于Java,没有其它语

言版本的实现,二进制兼容无从谈起.同时,Java程

序设计语言本身就有了接口概念,其完整的异常处

理机制,以及垃圾自动回收机制,减小了EJB存在

的意义.同时,在Web容器层,使用的是服务器端

JavaBeans,服务器端JavaBeans的概念只在JSP规

范中出现,而其与AWTJavaBeans以及EJB的关

系并不是十分明朗.JSP页面使用的JavaBeans与

AWTJavaBeans组件并不相同[6],这些JavaBeans

只是使用get与set方法将属性暴露出来,其与Java

类之间的差别很小.也就是说,Sun有3种不同的基

于Java的组件——EJB,AWTJavaBeans与服务

器端JavaBeans,初学者很容易混淆这些概念.

J2EE中采取的基于组件的开发范型如图2所

示.一个J2EE程序的开发周期分为3个步骤:

①组件供应商供应各种组件.

②通过组件级的描述符,组件被应用程序组装

员构造成模块.

③应用程序部署员将多个模块组合成应用,部

署到目标运行平台上.

图2 J2EE应用的生命周期[5]

在实际的Web应用开发中,程序员往往是一边

修改页面或程序,一边查看其执行效果.组件的开

发、组装与部署是一个反复的过程,三者的割裂给程

序员带来不便.在不少J2EE的兼容产品中,应用部

署工具是独立于开发环境的,这更增加了应用开发

的不便.

总之,J2EE复杂的体系结构来源于:

①Web应

9418期阮 彤等:

基于Java的应用服务器的设计与实现

务器的多种功能包括支持多种通信协议,兼顾

表示逻辑与应用逻辑等等.②基于组件的开发范型

与普通的面向对象开发范型之间的差距,以及基于

标签的语言与传统的程序设计语言之间的差距.复

杂的体系结构给程序的开发、调试、可维护性都带来

了负面影响,对于用户来说,选择基于Web的应用

开发是必然,虽然Web应用的调试与维护将远远复

杂于传统的应用,而J2EE的复杂性只是Web应用

复杂性的一种体现.同样,融入组件技术是为了增加

应用的开发速度,提高程序的可维护性.然而,在传

统的开发范型中加入新的开发范型与新的技术,在

实践中,效果往往是负面的.

3 应用与组件的版本管理

一个J2EE应用由一个或多个J2EE模块,以及

一个J2EE应用程序描述符组成.应用程序描述符

描述了模块的部署状况.而每个模块又可能由一个

或多个组件以及模块级的描述符组成.每个应用级

和模块级的描述符是用XML的文档类型定义

(documenttypedefinition)描述的.

应用程序描述符包含了模块所需要的申明性信

息以及组合应用程序所需要的信息,如一个组件是

否具有事务属性,组件的JNDI名称等等.然而,其

缺乏一个重要的信息——版本信息,J2EE平台的其

它规范,如EJB等,均未谈及版本控制.

这里的版本管理分为两个级别:

(1)应用部署时的版本,即应用部署工具可以

管理应用、模块以及组件的不同版本,在不同时刻、

不同场合,部署相同模块、组件的不同版本.

(2)应用运行时的版本,即允许相同组件或程

序的不同版本同时运行,允许在应用运行过程中增

加新的组件,允许在应用运行时更新组件,通常称为

热插拔.

对于

(1),需要在规范描述符的DTD中增加版

本元素.而对于

(2),问题要本质得多.基于Web的

应用,例如电子商务,需要的是24×7小时连续可

用,而在基于组件的应用开发中,组件的更新比在普

通的应用中更加频繁.要求组件可以热插拔,是关键

任务应用的必然需求.EJB体系结构缺乏这样的能

力,意味着其无法在一些关键任务领域,如电信、银

行,电子商务等领域与CORBA竞争.

级别

(2)涉及到EJB组件模型的设计.EJB[7]规

范没有定义版本控制标准[8,9],相反,EJB规范声明

将版本控制工作完全留给组件容器供应商,那么如

果J2EE平台供应商、EJB容器供应者、组件供应商

不同,很容易产生冲突.这种版本设计方案与

CORBA完全不同,在CORBA中,对于版本的管理

已经在规范中有明确的定义.

同时,RMI[10]的设计也对组件的热插拔不利.

RMI是Java中客户与服务器通信的基本机制,然

而,在RMI中,其接口与实现的分离并不是那么彻

底.原因在于在RMI中客户端的桩模块是由对象实

现而不是接口生成的.

具体地,在RMI中,客户端桩模块是由RMI工

具从对象实现中生成.例如,Hello.Java,HelloImpl.

Java,HelloClient.Java,分别是一个类的远程接口、远

程对象实现、客户端.生成客户与服务器端桩模块的命

令是:

rmicHelloImpl.而生成的客户与服务器端桩模

块的分别是HelloImplStub.class与HelloImpl

Skel.class.而客户程序HelloClient.Java需要通过

客户端桩模块才能访问服务器实现.该过程与

CORBA中的过程完全不同,在CORBA中,通过

IDL文件生成客户端与服务器端的桩模块,使得客

户端不再依赖于特定的对象实现.在J2EE中,J2EE

的客户需要一个由服务器实现生成的.jar文件才能

够访问服务器端.因此,客户与服务器是一个紧密耦

合的关系.当然,在网络环境中,Java代码本身的可

移动性可以缓解这一问题.

另外一个值得一提的问题是应用与类的重新装

载问题.在J2EE的参考实现中,是通过整个应用包

的名称的修改来实现一个应用的重新部署,这种粗粒

度的实现方法与J2EE这样一个系统级应用平台的

目标不太一致,其完全回避了应用部署的版本问题.

总之,作为一个关键任务应用的支撑平台,

J2EE不仅在版本管理,组件的热插拔,而且在其它

方面,如运行中应用与组件的管理与监控等,都缺乏

相应的标准.

4 JWebFrame的设计与实现

4.1 JWebFrame的体系结构

基于上文的分析,我们设计并实现了一个轻量

级的、面向快速应用开发的Java应用服务器,该服

务器本身完全由Java语言实现.

JWebFrame的体系结构如图3所示.一个

JWebFrame应用程序由一组JWebScript页面与一

些Java类组成.JWebFrame应用服务器提供了一

942计算机研究与发展2001年

稿收到日期:

2000-09-14;修改稿收到日期:

2001-03-13

本课题得到国家自然科学重点基金(69833030)和中国科学院“百人计划”基金资助

基于Java的应用服务器的设计与实现

阮 彤① 李 京① 冯东雷②

①(中国科学院软件研究所计算机科学开放研究实验室对象技术中心 北京 100080)

②(上海交通大学计算机科学与工程系 上海 200030)

(ruan@otcaix.iscas.ac.cn)

摘 要 应用服务器是当前基于Web的软件开发的重要的支撑平台,Sun公司的J2EE(Java2platform,

EnterpriseEdition)是一个基于Java的企业级应用服务器的标准.从Web应用的体系结构和基于组件的软件开发

入手剖析J2EE,指出了其存在的一些缺点,如难以支持版本管理、多层结构与多种技术并存导致概念庞杂,开发与

维护困难等.进一步地,给出了设计和实现的一个Java应用服务器——JWebFrame.

关键词 应用服务器,Java,J2EE,软件体系结构,配置管理

中图法分类号 TP311.5

THEDESIGNANDIMPLEMENTATIONOFJAVA

APPLICATIONSERVER

RUANTong①,LIJing①,andFENGDong-Lei②

①(ObjectTechnologyCenter,LaboratoryofComputerScience,InstituteofSoftware,

ChineseAcademyofSciences,Beijing100080)

②(DepartmentofComputerScienceandEngineering,ShanghaiJiaotongUniversity,Shanghai200030)

Abstract ApplicationserverisachiefplatformofWeb-basedapplication.J2EE(Java2

platform,EnterpriseEdition)isastandardofenterprise-scaleapplicationserver.Inthispaper

J2EEisanalyzedfromthepointofviewofsoftwarearchitectureandWeb-basedapplication

development.SomedefectsofJ2EEarepointedout,suchasJ2EEbeingunabletosupport

versionmanagementanditshavingdiverseconceptsandnotionsduetoitsmulti-tierarchitecture.

Furthermore,alightweightapplicationserver—JWebFrameisdeveloped,whichovercomessome

problemsofJ2EE.

Keywords applicationserver,Java,J2EE,softwarearchitecture,configurationmanagement

1 引  言

3层结构模型比起2层结构模型来说,具有更

高的性能,更好的可扩展性、可维护性与可重用

性[1,2].中间层服务器,即通常所说的应用服务器,作

为3层结构的核心,是业务逻辑与规则的执行场所,

提供连接池管理和分布式事务支持等功能.为比较

后来出现的各种应用服务器,本文将90年代初未融

合Web技术的应用服务器称为传统应用服务器.

Web的出现使得企业级应用有了新的解决方案,由

于Web具有开放、低成本、跨平台等特性,基于

Web的应用服务器很快出现在市场上.Web应用服

务器往往包括一个Web页面设计工具和动态页面

服务器,提供基于Web的客户/服务器计算,此类

Web应用服务器从功能上说只是一个Web网关.

WebFrame执行引擎与4个应用设施:

连接管理

器、安全管理器、表示管理器以及Session管理器.

图3 JWebFrame的体系结构

(1)JWebFrame执行引擎

JWebFrame执行引擎管理JWebFrame页面的

最终执行,包括调用JWebScript编译器,装载每个

页面的目标文件,为每个类创建实例池等.当用户调

用某个页面时,就在实例池中寻找一个运行之;当用

户执行完毕后,就将其返回给实例池.在执行引擎运

行的过程中,会与其它功能部件进行交互,如安全管

理部件,连接管理部件等.这些部件与执行引擎之间

的关系是调用与被调用的关系.

(2)连接管理器

连接管理器管理用户与数据库的连接.连接管

理器通过建立用户页面可用的连接缓冲池,减少了

连接/断开所需的系统开销.在使用初始资源建立缓

冲池中的连接后,其余连接/断开连接所用的系统开

销就不大了,因为这只是重复使用已有的连接而已.

同时连接管理器还使用户能控制到数据服务器产品

的并发连接数.当数据库服务器的许可证协议限定

用户数量时,这一特性是非常有用的.

(3)安全管理器

JWebFrame安全管理器包括访问控制、身份认证

和审计3个部分.在访问控制管理方面,JWebFrame

使用基于角色访问控制RBAC(role-basedaccess

control)模型,其提供2个工具:

用户管理工具与资

源权限分配工具.这2个工具都是独立于应用服务

器提供的.在身份认证方面,JWebFrame提供3种

方式的认证服务.①基于表格的;②基于HTTP基

本验证方式的;③基于安全证书的.

(4)表示转换器

HMTL页面是一些静态页面,而在这些静态页

面中嵌入的JWebScript标签将被应用服务器解释

执行.程序执行的结果,如数据库查询的结果集、数

组变量、浮点数类型的变量等,需要被转换成字符

串,插入到HTML页面中.JWebFrame所有标签的

返回值都被转换成相应的HTML元素,如表格、选

择列表等.这些转换功能由表示转化器提供.

JWebFrame编译器在编译特定标签时,会调用特定的

表示转换器接口.JWebFrame页面也可以直接调用这

个接口,这一接口以JavaAPI的形式提供给用户.

(5)Session管理器

Session管理器用以解决HTTP协议的无连接

问题.在与连接管理器一起使用时,保证了用户对数

据库的连接不会频繁断开.

4.2 JWebScript的设计

JWebScript的标签可以分为5类:

(1)控制与异常处理标签,包括WHILE,IF,

FOREACH,以及FOR与TRYCATCH对等.例

如,While标签的语法是:

〈!

ELEMENTjweb:

while--%jweb.body〉

〈!

ATTLISTjweb:

whileconditionCDATA

IMPLIED〉

〈!

ENTITY%jweb.body“(#PCDATA|

jweb:

while|jweb:

if|jweb:

return|jweb:

for|jweb:

foreach|jweb:

import|jweb:

methocall|jweb:

var|

jweb:

create|jweb:

connection|jwebrepresent)”〉

(2)包导入标签、对象定义与构造标签.例如使

用连接管理器的代码如下:

〈jweb:

importcom.otc.connection.*/〉〈jweb:

varConnectionSecureConnection/〉

〈jweb:

create〉SecureConnection=(user,

password,databasename)〈/jweb:

create〉.

(3)表达式标签,其表达式是作为XML元素

的内容表示的,如:

〈jweb:

methodcall〉Class.forName(“com.

sybase.jdbc.SybDriver”).newInstance()〈/jweb:

methodcall〉.

(4)返回标签是将一个表达式的值转换成字符

串后输出到HTML文件中,如:

〈jweb:

returnex=“newJava.util.Date().

toLocaleString()”/〉.

(5)便利设施标签是为方便Web应用程序的

开发,JWebFrame将对连接管理器、session管理器

等的使用与访问用标签的形式直接提供给客户.例

如,使用连接管理器连接到数据库的方法如下:

〈jweb:

Connectionname=“sampleConnection”

user=“dba”password=“***”datasource=

“ECommerce”/〉.

再如,构造对象时,使用“Session=true”属性可

9438期阮 彤等:

基于Java的应用服务器的设计与实现

问session管理器,例如,使用〈jweb:

create

session=“true”〉shoppingCart〈/jweb:

create〉,

shoppingCart对象就被自动地存储到对象当前的

session中.

例1是一个完整的JWebFrame页面.这是一个

Sun的J2EE参考实现中JSP的一个例子,使用

JW

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2