欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:11953300       资源大小:32.08KB        全文页数:26页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、基于Java的应用服务器的设计与实现阮彤基于Java的应用服务器的设计与实现阮彤李京冯东雷(中国科学院软件研究所计算机科学开放研究实验室对象技术中心北京100080)(上海交通大学计算机科学与工程系上海200030)(ruan otcaix. iscas. ac. cn)目前,新一代的应用服务器开始集成传统的应用服务器与W eb应用服务器的功能.例如, Sybase的EAServer 3. 0包含了动态页面服务器PowerDynamo与组件应用服务器Jaguar Component Transac-tion Server.1999年3月, Sun推出了Java 2 platform,Enter

    2、prise Edition (J2EE). J2EE面向基于Java与W eb的企业级应用开发,其包含了一个应用程序模型、一组API以及一个参考实现.目前,大多数主流应用服务器都开始支持J2EE,如, IBM W ebSphere3. 03, Sybase EAServer 3. 5, BEA W ebLogicServer 4. 54等.尽管J2EE的各种兼容实现已经开始在业界使用,但是, J2EE作为规范,本身设计存在着一些缺点,而这些缺点与基于W eb应用的体系结构,以及分布式组件技术的使用都有着密切的关系.如何合理使用J2EE中的各项技术,以及Java语言、EJB组件标准给应用服务器的

    3、设计带来哪些便利与缺点等,都是理论与实践中值得探讨的问题.本文的第2节从W eb应用的体系结构与应用开发范型角度,剖析了J2EE的应用程序模型;第3节指出了J2EE与EJB在版本管理上的缺陷;第4节给出了JW ebFrame一个基于Java的轻量级服务器的设计与实现;最后一部分比较了两个设计各自的优缺点,展望了基于Java的W eb应用服务器的未来.2J2EE的应用程序模型2.1W eb应用的体系结构传统的3层体系结构模型是:包含表示逻辑的客户层,包含应用逻辑的中间层应用服务器,以及表示事务处理与存储的数据库层.W eb的出现使应用服务器的功能发生了变化,因为此时的应用服务器既包含了应用逻辑,

    4、又包含了表示逻辑.代表了表示逻辑的HTML在中间层产生,又下载到客户端浏览器.中间层的双重功能有3种实现方式:直接用程序设计语言编程,返回的结果是一个W eb页面,如CGI程序;在HTML页面中嵌入一些可执行的代码,如ASP程序;分成两个文件,一个是HTML模板,另外一个是应用逻辑,存放应用逻辑的程序运行后将结果输送到HTML模板文件中.微软的idc/htx组合采用的就是第3种方法.从概念的清晰度与程序的可维护性角度来说,第3种是最理想的方法.在J2EE中, Servlet, JSP分别属于第1种、第2种方法.但是,如果用户将主要的应用逻辑放在服务器端JavaBeans中,那么JSP+Java

    5、Beans也可以看作是第3种方法.在J2EE中,将体系结构与开发范型等统称为应用程序模型. J2EE的体系结构如图1所示,其被分为4层:客户层,客户层可以是基于浏览器的,也可以是普通的J2EE客户.W eb容器层,支持基于W eb的开发.包含W eb服务器、JSP、服务器端JavaBeans和Servlet.EJB(enterprise JavaBeans)容器层,一个管理和调度EJB组件的EJB服务器以及相应的EJB池.EIS层,原有的企业信息系统.图1J2EE多层结构示意图从J2EE5的设计者角度来说,其提供给用户的是一个灵活而又完备的解决方案:(1)在非W eb应用中,直接使用EJB组件

    6、以及J2EE独立客户端,形成完整的基于组件的软件开发.(2)在W eb应用中,使用J2EE合适的方法是,对于轻量级的应用,使用JSP+服务器端JavaBeans的体系结构;对于重量级的应用,使用JSP+服务器端JavaBeans+EJB的体系结构. JSP相对于Servlet940计算机研究与发展2001年大好处在于可以方便用户将表示逻辑与应用逻辑分离.从MVC的结构来看, JSP存放表示逻辑,服务端JavaBeans存放控制逻辑,而应用模型放在EJB中,可能是J2EE设计者的初衷.对于习惯于使用Java的程序员来说,使用Servlet+ Java API可能是比较好的方法.(3)在复杂应用中

    7、,用户可以使用JSP+Servlet+ JavaAPI+ JavaBeans+ EJB的方案,这5种接口在使用时可以相互调用,体现了J2EE设计的灵活性.然而,下面两个问题会困扰J2EE的使用:(1)应用逻辑的放置在图1中可见, JSP与服务端JavaBeans在W eb容器中,而EJB在另一个容器中,两个容器是通过RM I连接起来的,使用RM I调用意味着两者是一种弱耦合关系.如果JSP、服务端JavaBeans、EJB分别包含的是MVC中视图、控制与模型,那么控制与模型的分离对于应用开发与调试都是不合适的.从理论上说, JSP, Servlet, JavaAPI,服务器端JavaBeans

    8、,EJB都有存放应用逻辑的功能,那么,应用逻辑如何放置就成为用户要着重考虑的问题.应用逻辑的随意放置将降低程序的可维护性. J2EE只是提供了一个基础平台,它的合理使用需要用户对特定应用、特定技术的洞察.(2) J2EE多层次、多技术并存的设计加剧了开发的难度,降低了程序的性能.当一个应用被分割成多个层次时,程序出错的可能性会更大,而排错的难度也更大,当程序测试时,需要测试的环节会更多.例如,在JSP中使用Scriptlet调用了Java API与服务器端JavaBeans,进而又调用了EJB,那么如果执行一个JSP文件出错,可能会是其中任何一个环节错.如果JSP文件又具有在客户端运行的Jav

    9、aScript,程序调试的难度又增加了一个数量级.多层结构对应用性能也带来了负面影响,在J2EE中, JSP引擎建立在Java Servlet引擎之上,W eb容器层与EJB容器层用RM I连接,而RM I又使用TCP /IP协议栈,这些都极大地降低了J2EE平台的运行效率.2.2组件技术的使用在J2EE中,组件技术的使用体现在两个方面:EJB与服务器端JavaBeans;基于组件的开发范型.组件技术从理论上确实具有无可辩驳的优点.其分离了接口与实现,使得程序在二进制层次上兼容,提高了程序的可重用性,同时,组件的初始化、调用、清除等,都由组件服务器统一管理,提高了程序的易管理性.组件与组件之间

    10、的耦合度低于对象与对象之间的耦合度,提高了程序的健壮性.基于组件的开发范型将加快软件的开发速度,提高软件的可重用性.然而,这些优越性在J2EE中并不能得到很好的体现.首先,EJB标准完全基于Java,没有其它语言版本的实现,二进制兼容无从谈起.同时, Java程序设计语言本身就有了接口概念,其完整的异常处理机制,以及垃圾自动回收机制,减小了EJB存在的意义.同时,在W eb容器层,使用的是服务器端JavaBeans,服务器端JavaBeans的概念只在JSP规范中出现,而其与AWT JavaBeans以及EJB的关系并不是十分明朗. JSP页面使用的JavaBeans与AWT JavaBean

    11、s组件并不相同6,这些JavaBeans只是使用get与set方法将属性暴露出来,其与Java类之间的差别很小.也就是说,Sun有3种不同的基于Java的组件EJB, AWT JavaBeans与服务器端JavaBeans,初学者很容易混淆这些概念.J2EE中采取的基于组件的开发范型如图2所示.一个J2EE程序的开发周期分为3个步骤:组件供应商供应各种组件.通过组件级的描述符,组件被应用程序组装员构造成模块.应用程序部署员将多个模块组合成应用,部署到目标运行平台上.图2J2EE应用的生命周期5在实际的W eb应用开发中,程序员往往是一边修改页面或程序,一边查看其执行效果.组件的开发、组装与部署

    12、是一个反复的过程,三者的割裂给程序员带来不便.在不少J2EE的兼容产品中,应用部署工具是独立于开发环境的,这更增加了应用开发的不便.总之, J2EE复杂的体系结构来源于:W eb应9418期阮彤等:基于Java的应用服务器的设计与实现务器的多种功能包括支持多种通信协议,兼顾表示逻辑与应用逻辑等等.基于组件的开发范型与普通的面向对象开发范型之间的差距,以及基于标签的语言与传统的程序设计语言之间的差距.复杂的体系结构给程序的开发、调试、可维护性都带来了负面影响,对于用户来说,选择基于W eb的应用开发是必然,虽然W eb应用的调试与维护将远远复杂于传统的应用,而J2EE的复杂性只是W eb应用复杂

    13、性的一种体现.同样,融入组件技术是为了增加应用的开发速度,提高程序的可维护性.然而,在传统的开发范型中加入新的开发范型与新的技术,在实践中,效果往往是负面的.3应用与组件的版本管理一个J2EE应用由一个或多个J2EE模块,以及一个J2EE应用程序描述符组成.应用程序描述符描述了模块的部署状况.而每个模块又可能由一个或多个组件以及模块级的描述符组成.每个应用级和模块级的描述符是用XML的文档类型定义(document type definition)描述的.应用程序描述符包含了模块所需要的申明性信息以及组合应用程序所需要的信息,如一个组件是否具有事务属性,组件的JNDI名称等等.然而,其缺乏一个

    14、重要的信息版本信息, J2EE平台的其它规范,如EJB等,均未谈及版本控制.这里的版本管理分为两个级别:(1)应用部署时的版本,即应用部署工具可以管理应用、模块以及组件的不同版本,在不同时刻、不同场合,部署相同模块、组件的不同版本.(2)应用运行时的版本,即允许相同组件或程序的不同版本同时运行,允许在应用运行过程中增加新的组件,允许在应用运行时更新组件,通常称为热插拔.对于(1),需要在规范描述符的DTD中增加版本元素.而对于(2),问题要本质得多.基于W eb的应用,例如电子商务,需要的是247小时连续可用,而在基于组件的应用开发中,组件的更新比在普通的应用中更加频繁.要求组件可以热插拔,是

    15、关键任务应用的必然需求.EJB体系结构缺乏这样的能力,意味着其无法在一些关键任务领域,如电信、银行,电子商务等领域与CORBA竞争.级别(2)涉及到EJB组件模型的设计.EJB7规范没有定义版本控制标准8, 9,相反,EJB规范声明将版本控制工作完全留给组件容器供应商,那么如果J2EE平台供应商、EJB容器供应者、组件供应商不同,很容易产生冲突.这种版本设计方案与CORBA完全不同,在CORBA中,对于版本的管理已经在规范中有明确的定义.同时, RM I10的设计也对组件的热插拔不利.RM I是Java中客户与服务器通信的基本机制,然而,在RM I中,其接口与实现的分离并不是那么彻底.原因在于

    16、在RM I中客户端的桩模块是由对象实现而不是接口生成的.具体地,在RM I中,客户端桩模块是由RM I工具从对象实现中生成.例如,Hello. Java,HelloImpl.Java,HelloClient. Java,分别是一个类的远程接口、远程对象实现、客户端.生成客户与服务器端桩模块的命令是: rm icHelloImpl.而生成的客户与服务器端桩模块的分别是HelloImpl Stub. class与HelloImplSkel. class.而客户程序HelloClient. Java需要通过客户端桩模块才能访问服务器实现.该过程与CORBA中的过程完全不同,在CORBA中,通过IDL

    17、文件生成客户端与服务器端的桩模块,使得客户端不再依赖于特定的对象实现.在J2EE中, J2EE的客户需要一个由服务器实现生成的. jar文件才能够访问服务器端.因此,客户与服务器是一个紧密耦合的关系.当然,在网络环境中, Java代码本身的可移动性可以缓解这一问题.另外一个值得一提的问题是应用与类的重新装载问题.在J2EE的参考实现中,是通过整个应用包的名称的修改来实现一个应用的重新部署,这种粗粒度的实现方法与J2EE这样一个系统级应用平台的目标不太一致,其完全回避了应用部署的版本问题.总之,作为一个关键任务应用的支撑平台,J2EE不仅在版本管理,组件的热插拔,而且在其它方面,如运行中应用与组

    18、件的管理与监控等,都缺乏相应的标准.4JW ebFrame的设计与实现4.1JW ebFrame的体系结构基于上文的分析,我们设计并实现了一个轻量级的、面向快速应用开发的Java应用服务器,该服务器本身完全由Java语言实现.JW ebFrame的体系结构如图3所示.一个JW ebFrame应用程序由一组JW ebScript页面与一些Java类组成. JW ebFrame应用服务器提供了一942计算机研究与发展2001年稿收到日期: 2000-09-14;修改稿收到日期: 2001-03-13本课题得到国家自然科学重点基金(69833030)和中国科学院“百人计划”基金资助基于Java的应用

    19、服务器的设计与实现阮彤李京冯东雷(中国科学院软件研究所计算机科学开放研究实验室对象技术中心北京100080)(上海交通大学计算机科学与工程系上海200030)(ruan otcaix. iscas. ac. cn)摘要应用服务器是当前基于W eb的软件开发的重要的支撑平台, Sun公司的J2EE (Java 2 platform,Enterprise Edition)是一个基于Java的企业级应用服务器的标准.从W eb应用的体系结构和基于组件的软件开发入手剖析J2EE,指出了其存在的一些缺点,如难以支持版本管理、多层结构与多种技术并存导致概念庞杂,开发与维护困难等.进一步地,给出了设计和实现

    20、的一个Java应用服务器JW ebFrame.关键词应用服务器, Java, J2EE,软件体系结构,配置管理中图法分类号TP311. 5THE DESIGN AND IMPLEMENTATION OF JAVAAPPLICATION SERVERRUAN Tong, LI Jing, and FENG Dong-Lei(ObjectTechnology Center,Laboratory ofComputer Science,Institute ofSoftware,Chinese Academy ofSciences,Beijing100080)(DepartmentofComputer

    21、Science and Engineering,ShanghaiJiaotongUniversity,Shanghai200030)AbstractApplication server is a chief platform of W eb-based application. J2EE (Java 2platform, Enterprise Edition) is a standard of enterprise-scale application server. In this paperJ2EE is analyzed from the point of view of software

    22、 architecture and W eb-based applicationdevelopment. Some defects of J2EE are pointed out, such as J2EE being unable to supportversionmanagementand itshaving diverse concepts and notions due to itsmulti-tier architecture.Furthermore, a lightweightapplication serverJW ebFrame isdeveloped, which overc

    23、omes someproblems of J2EE.Key wordsapplication server, Java, J2EE, software architecture, configurationmanagement1引言3层结构模型比起2层结构模型来说,具有更高的性能,更好的可扩展性、可维护性与可重用性1, 2.中间层服务器,即通常所说的应用服务器,作为3层结构的核心,是业务逻辑与规则的执行场所,提供连接池管理和分布式事务支持等功能.为比较后来出现的各种应用服务器,本文将90年代初未融合W eb技术的应用服务器称为传统应用服务器.W eb的出现使得企业级应用有了新的解决方案,由于W

    24、 eb具有开放、低成本、跨平台等特性,基于W eb的应用服务器很快出现在市场上.W eb应用服务器往往包括一个W eb页面设计工具和动态页面服务器,提供基于W eb的客户/服务器计算,此类W eb应用服务器从功能上说只是一个W eb网关.W ebFrame执行引擎与4个应用设施:连接管理器、安全管理器、表示管理器以及Session管理器.图3JW ebFrame的体系结构(1) JW ebFrame执行引擎JW ebFrame执行引擎管理JW ebFrame页面的最终执行,包括调用JW ebScript编译器,装载每个页面的目标文件,为每个类创建实例池等.当用户调用某个页面时,就在实例池中寻找

    25、一个运行之;当用户执行完毕后,就将其返回给实例池.在执行引擎运行的过程中,会与其它功能部件进行交互,如安全管理部件,连接管理部件等.这些部件与执行引擎之间的关系是调用与被调用的关系.(2)连接管理器连接管理器管理用户与数据库的连接.连接管理器通过建立用户页面可用的连接缓冲池,减少了连接/断开所需的系统开销.在使用初始资源建立缓冲池中的连接后,其余连接/断开连接所用的系统开销就不大了,因为这只是重复使用已有的连接而已.同时连接管理器还使用户能控制到数据服务器产品的并发连接数.当数据库服务器的许可证协议限定用户数量时,这一特性是非常有用的.(3)安全管理器JW ebFrame安全管理器包括访问控制

    26、、身份认证和审计3个部分.在访问控制管理方面, JW ebFrame使用基于角色访问控制RBAC (role-based accesscontrol)模型,其提供2个工具:用户管理工具与资源权限分配工具.这2个工具都是独立于应用服务器提供的.在身份认证方面, JW ebFrame提供3种方式的认证服务.基于表格的;基于HTTP基本验证方式的;基于安全证书的.(4)表示转换器HMTL页面是一些静态页面,而在这些静态页面中嵌入的JW ebScript标签将被应用服务器解释执行.程序执行的结果,如数据库查询的结果集、数组变量、浮点数类型的变量等,需要被转换成字符串,插入到HTML页面中. JW eb

    27、Frame所有标签的返回值都被转换成相应的HTML元素,如表格、选择列表等.这些转换功能由表示转化器提供.JW ebFrame编译器在编译特定标签时,会调用特定的表示转换器接口. JW ebFrame页面也可以直接调用这个接口,这一接口以JavaAPI的形式提供给用户.(5) Session管理器Session管理器用以解决HTTP协议的无连接问题.在与连接管理器一起使用时,保证了用户对数据库的连接不会频繁断开.4.2JW ebScript的设计JW ebScript的标签可以分为5类:(1)控制与异常处理标签,包括WHILE, IF,FOREACH,以及FOR与TRY CATCH对等.例如,

    28、While标签的语法是:!ELEMENTjweb:while-%jweb.body!ATTLISTjweb: while conditionCDATAIMPLIED!ENTITY%jweb.body“(#PCDATA|jweb:while|jweb: if|jweb: return|jweb: for|jweb:foreach|jweb: import|jweb:methocall|jweb: var|jweb: create|jweb: connection|jweb represent)”(2)包导入标签、对象定义与构造标签.例如使用连接管理器的代码如下:jweb: importcom.o

    29、tc.connection.* /jweb:varConnection SecureConnection/jweb: createSecureConnection= (user,password,databasename)/jweb: create.(3)表达式标签,其表达式是作为XML元素的内容表示的,如:jweb: methodcallClass.forName(“com.sybase.jdbc.SybDriver”).newInstance()/jweb:methodcall.(4)返回标签是将一个表达式的值转换成字符串后输出到HTML文件中,如:jweb: returnex=“new

    30、Java.util.Date().toLocaleString()”/.(5)便利设施标签是为方便W eb应用程序的开发, JW ebFrame将对连接管理器、session管理器等的使用与访问用标签的形式直接提供给客户.例如,使用连接管理器连接到数据库的方法如下:jweb: Connectionname=“sampleConnection”user=“dba”password=“*”datasource=“ECommerce”/.再如,构造对象时,使用“Session= true”属性可9438期阮彤等:基于Java的应用服务器的设计与实现问session管理器,例如,使用jweb: createsession=“true”shoppingCart/jweb: create,shoppingCart对象就被自动地存储到对象当前的session中.例1是一个完整的JW ebFrame页面.这是一个Sun的J2EE参考实现中JSP的一个例子,使用JW


    注意事项

    本文(基于Java的应用服务器的设计与实现阮彤.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开