一种实现热部署的处理方法、装置及服务器.pdf

上传人:t**** 文档编号:275512 上传时间:2018-02-07 格式:PDF 页数:17 大小:3.66MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310121779.8

申请日:

2013.04.09

公开号:

CN104102502A

公开日:

2014.10.15

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 9/445申请日:20130409|||公开

IPC分类号:

G06F9/445

主分类号:

G06F9/445

申请人:

腾讯科技(深圳)有限公司

发明人:

吴帅

地址:

518044 广东省深圳市福田区振兴路赛格科技园2栋东403室

优先权:

专利代理机构:

北京派特恩知识产权代理有限公司 11270

代理人:

张颖玲;张振伟

PDF下载: PDF下载
内容摘要

本发明公开了一种实现热部署的处理方法,该方法包括:接收上传的新的类文件替换旧的类文件,并接收更新文件列表;确定所述更新文件列表中的类文件的文件名在类管理列表中,加载文件名在类管理列表中的类文件,创建新实例替换旧实例;其中,所述类管理列表记录有允许热部署的类文件的文件名;本发明同时还公开了一种实现热部署的处理装置及服务器,通过本发明的方案,使服务器不必一直扫描应用部署目录便可实现热部署功能,减少系统在更新时对资源的占用,提高更新效率,提升用户体验。

权利要求书

1.  一种实现热部署的处理方法,其特征在于,该处理方法包括:
接收上传的新的类文件替换旧的类文件,并接收更新文件列表;
确定所述更新文件列表中的类文件的文件名在类管理列表中,加载文件名在类管理列表中的类文件,创建新实例替换旧实例;所述类管理列表中记录有允许热部署的类文件的文件名。

2.
  根据权利要求1所述的处理方法,其特征在于,在所述接收上传的新的类文件替换旧的类文件之前,该方法还包括:服务器在启动时加载类文件的过程,包括:
当服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名,判断所述类文件的文件名是否在类管理列表中,若判断的结果为是,则通过用户类加载器CustomClassloader加载所述类文件并实例化,存储所述类文件的实例与对应的统一资源定位符URL的映射关系;
若判断的结果为否,则通过应用类加载器AppClassloader加载所述类文件并实例化,存储所述类文件的实例与对应的URL的映射关系。

3.
  根据权利要求2所述的处理方法,其特征在于,该方法还包括:
当所述类文件为servlet类文件且接收到页面请求时,提取所述页面请求中的URL,根据所述URL查找存储的servlet实例与URL的映射关系,若找到所述URL,则获取与所述URL对应的servlet实例,调用所述servlet实例的处理函数处理所述页面请求,返回处理结果;
若找不到所述URL,则返回错误提示信息或不执行任何操作。

4.
  根据权利要求3所述的处理方法,其特征在于,所述调用所述servlet实例的处理函数处理所述页面请求时,该方法还包括:
所述servlet实例的处理函数调用下层的facade类文件,在确定存在所述facade类文件的类定义且所述facade类文件没有被加载并实例化之后,判断所述facade类文件的文件名是否在类管理列表中,若判断的结果为是,则通过 CustomClassloader加载所述facade类文件并实例化,返回facade实例;若判断的结果为否,则通过AppClassloader加载所述facade类文件并实例化,返回facade实例。

5.
  根据权利要求4所述的处理方法,其特征在于,该方法还包括:
所述servlet实例的处理函数调用下层的除facade类文件以外的其他类文件,判断所述其他类文件的文件名是否在类管理列表中,若判断的结果为是,则通过CustomClassloader加载所述其他类文件并实例化,返回所述其他类文件的实例;若判断的结果为否,则通过AppClassloader加载所述其他类文件并实例化,返回所述其他类文件的实例。

6.
  一种实现热部署的处理装置,其特征在于,所述处理装置包括类更新模块,所述类更新模块包括:接收模块、第一存储模块、第一确定模块和第一用户类加载模块;其中,
所述接收模块,用于接收上传的新的类文件以替换旧的类文件,并接收更新文件列表;
所述第一存储模块,用于存储类文件,并存储更新文件列表和类管理列表;
所述第一确定模块,用于确定所述更新文件列表中的类文件的文件名在类管理列表中时,触发第一用户类加载模块;
所述第一用户类加载模块,用于加载文件名在类管理列表中的类文件,创建新实例替换旧实例。

7.
  根据权利要求6所述的处理装置,其特征在于,所述处理装置还包括类加载模块,所述类加载模块包括:扫描模块、第二确定模块、第二用户类加载模块、第一应用类加载模块和第二存储模块;其中,
所述扫描模块,用于在服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名;
所述第二确定模块,用于确定所述类文件的文件名在类管理列表中时,触发第二用户类加载模块;确定所述类文件的文件名不在类管理列表中时,触发第一应用类加载模块;
所述第二用户类加载模块,用于通过CustomClassloader加载文件名在类管理列表中的类文件并实例化,将所述类文件的实例与对应的URL的映射关系发送给第二存储模块;
所述第一应用类加载模块,用于通过AppClassloader加载文件名不在类管理列表中的类文件并实例化,将所述类文件的实例与对应的URL的映射关系发送给第二存储模块;
相应的,所述第二存储模块,用于存储所述实例与对应的URL的映射关系。

8.
  根据权利要求6所述的处理装置,其特征在于,所述处理装置还包括类运行模块,所述类运行模块包括:提取模块、查找获取模块和运行模块;其中,
所述提取模块,用于当所述类文件为servlet类文件且接收到页面请求时,提取所述页面请求中的URL,将所述URL发送给查找获取模块;
所述查找获取模块,用于根据所述提取模块发送的URL查找存储的servlet实例与URL的映射关系,获取与所述URL对应的servlet实例,将所述servlet实例发送给运行模块;
所述运行模块,用于根据所述查找获取模块发送的servlet实例,调用所述servlet实例的处理函数处理所述页面请求,返回处理结果;还用于所述查找获取模块没有找到所述URL对应的servlet实例时,生成并返回错误提示信息。

9.
  根据权利要求8所述的处理装置,其特征在于,所述运行模块还包括:调用模块、第三用户类加载模块、第二应用类加载模块;其中,
所述调用模块,用于servlet实例的处理函数调用下层的facade类文件,在确定存在所述facade类文件的类定义且所述facade类文件没有被加载并实例化之后,判断所述facade类文件的文件名是否在类管理列表中,在判断结果为是时,触发第三用户类加载模块;在判断结果为否时,触发第二应用类加载模块;
所述第三用户类加载模块,用于通过CustomClassloader加载文件名在类管理列表中的facade类文件并实例化,返回facade实例;
所述第二应用类加载模块,用于通过AppClassloader加载文件名不在类管理列表中的facade类文件并实例化,返回facade实例。

10.
  根据权利要求9所述的处理装置,其特征在于,所述调用模块,还用于当servlet实例的处理函数调用下层的除facade类文件以外的其他类文件时,判断所述其他类文件的文件名是否在类管理列表中,在判断结果为是时,触发第三用户类加载模块;在判断结果为否时,触发第二应用类加载模块;
所述第三用户类加载模块,还用于通过CustomClassloader加载文件名在类管理列表中的所述其他类文件并实例化,返回所述其他类文件的实例;
所述第二应用类加载模块,还用于通过AppClassloader加载文件名不在类管理列表中的所述其他类文件并实例化,返回所述其他类文件的实例。

11.
  一种服务器,其特征在于,所述服务器包括如权利要求6至10任一项所述的实现热部署的处理装置。

说明书

一种实现热部署的处理方法、装置及服务器
技术领域
本发明涉及计算机技术,具体涉及一种实现热部署的处理方法、装置及服务器。
背景技术
热部署,即为在应用正在运行的时候升级软件,却不需要重新启动应用。现有的大部分网页(Web)服务器,例如Apache软件基金会开发的应用服务器Tomcat、IBM公司开发的软件平台WebSphere、美国Oracle公司开发的应用服务器WebLogic等,都提供调试模式或者类似功能,当Web服务器以调试模式运行时,Web服务器能够实现热部署功能。但是,现有技术在实际运行中存在两个不足之处:一是在更新过程中,Web服务器会一直扫描应用部署目录,造成比较大的系统开销,影响服务效率;二是Web服务器需要检查每个文件是否被更改或者是否有新的文件,会造成资源的浪费,影响更新效率。
发明内容
有鉴于此,本发明的主要目的在于提供一种实现热部署的处理方法、装置及服务器,使服务器不必一直扫描应用部署目录便可实现热部署功能,减少系统在更新时对资源的占用,提高更新效率,提升用户体验。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种实现热部署的处理方法,该处理方法包括:
接收上传的新的类文件替换旧的类文件,并接收更新文件列表;
确定所述更新文件列表中的类文件的文件名在类管理列表中,加载文件名在类管理列表中的类文件,创建新实例替换旧实例;所述类管理列表中记录有允许热部署的类文件的文件名。
上述方案中,在所述接收上传的新的类文件替换旧的类文件之前,该方法还包括:服务器在启动时加载类文件的过程,包括:
当服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名,判断所述类文件的文件名是否在类管理列表中,若判断的结果为是,则通过用户类加载器(CustomClassloader)加载所述类文件并实例化,存储所述类文件的实例与对应的统一资源定位符(URL,Uniform Resource Locator)的映射关系;
若判断的结果为否,则通过应用类加载器AppClassloader加载所述类文件并实例化,存储所述类文件的实例与对应的URL的映射关系。
上述方案中,该方法还包括:
当所述类文件为JAVA伺服小程序(sevlet)类文件且接收到页面请求时,提取所述页面请求中的URL,根据所述URL查找存储的servlet实例与URL的映射关系,若找到所述URL,则获取与所述URL对应的servlet实例,调用所述servlet实例的处理函数处理所述页面请求,返回处理结果;
若找不到所述URL,则返回错误提示信息或不执行任何操作。
上述方案中,所述调用所述servlet实例的处理函数处理所述页面请求时,该方法还包括:
所述servlet实例的处理函数调用下层的外观模式(facade)类文件,在确定存在所述facade类文件的类定义且所述facade类文件没有被加载并实例化之后,判断所述facade类文件的文件名是否在类管理列表中,若判断的结果为是,则通过CustomClassloader加载所述facade类文件并实例化,返回facade实例;若判断的结果为否,则通过AppClassloader加载所述facade类文件并实例化,返回facade实例。
上述方案中,该方法还包括:
所述servlet实例的处理函数调用下层的除facade类文件以外的其他类文件,判断所述其他类文件的文件名是否在类管理列表中,若判断的结果为是,则通过CustomClassloader加载所述其他类文件并实例化,返回所述其他类文件 的实例;若判断的结果为否,则通过AppClassloader加载所述其他类文件并实例化,返回所述其他类文件的实例。
本发明还提供了一种实现热部署的处理装置,所述处理装置包括类更新模块,所述类更新模块包括:接收模块、第一存储模块、第一确定模块和第一用户类加载模块;其中,
所述接收模块,用于接收上传的新的类文件以替换旧的类文件,并接收更新文件列表;
所述第一存储模块,用于存储类文件,并存储更新文件列表和类管理列表;
所述第一确定模块,用于确定所述更新文件列表中的类文件的文件名在类管理列表中时,触发第一用户类加载模块;
所述第一用户类加载模块,用于加载文件名在类管理列表中的类文件,创建新实例替换旧实例。
上述方案中,所述处理装置还包括类加载模块,所述类加载模块包括:扫描模块、第二确定模块、第二用户类加载模块、第一应用类加载模块和第二存储模块;其中,
所述扫描模块,用于在服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名;
所述第二确定模块,用于确定所述类文件的文件名在类管理列表中时,触发第二用户类加载模块;确定所述类文件的文件名不在类管理列表中时,触发第一应用类加载模块;
所述第二用户类加载模块,用于通过CustomClassloader加载文件名在类管理列表中的类文件并实例化,将所述类文件的实例与对应的URL的映射关系发送给第二存储模块;
所述第一应用类加载模块,用于通过AppClassloader加载文件名不在类管理列表中的类文件并实例化,将所述类文件的实例与对应的URL的映射关系发送给第二存储模块;
相应的,所述第二存储模块,用于存储所述实例与对应的URL的映射关系。
上述方案中,所述处理装置还包括类运行模块,所述类运行模块包括:提取模块、查找获取模块和运行模块;其中,
所述提取模块,用于当所述类文件为servlet类文件且接收到页面请求时,提取所述页面请求中的URL,将所述URL发送给查找获取模块;
所述查找获取模块,用于根据所述提取模块发送的URL查找存储的servlet实例与URL的映射关系,获取与所述URL对应的servlet实例,将所述servlet实例发送给运行模块;
所述运行模块,用于根据所述查找获取模块发送的servlet实例,调用所述servlet实例的处理函数处理所述页面请求,返回处理结果;还用于所述查找获取模块没有找到所述URL对应的servlet实例时,生成并返回错误提示信息。
上述方案中,所述运行模块还包括:调用模块、第三用户类加载模块、第二应用类加载模块;其中,
所述调用模块,用于servlet实例的处理函数调用下层的facade类文件,在确定存在所述facade类文件的类定义且所述facade类文件没有被加载并实例化之后,判断所述facade类文件的文件名是否在类管理列表中,在判断结果为是时,触发第三用户类加载模块;在判断结果为否时,触发第二应用类加载模块;
所述第三用户类加载模块,用于通过CustomClassloader加载文件名在类管理列表中的facade类文件并实例化,返回facade实例;
所述第二应用类加载模块,用于通过AppClassloader加载文件名不在类管理列表中的facade类文件并实例化,返回facade实例。
上述方案中,所述调用模块,还用于当servlet实例的处理函数调用下层的除facade类文件以外的其他类文件时,判断所述其他类文件的文件名是否在类管理列表中,在判断结果为是时,触发第三用户类加载模块;在判断结果为否时,触发第二应用类加载模块;
所述第三用户类加载模块,还用于通过CustomClassloader加载文件名在类管理列表中的所述其他类文件并实例化,返回所述其他类文件的实例;
所述第二应用类加载模块,还用于通过AppClassloader加载文件名不在类 管理列表中的所述其他类文件并实例化,返回所述其他类文件的实例。
本发明还提供了一种服务器,所述服务器包括本发明所述的实现热部署的处理装置。
本发明提供的一种实现热部署的处理方法、装置及服务器,接收上传的新的类文件替换旧的类文件,并接收更新文件列表;确定所述更新文件列表中的类文件的文件名在类管理列表中,加载文件名在类管理列表中的类文件,创建新实例替换旧实例;所述类管理列表中记录有允许热部署的类文件的文件名;如此,使服务器不必一直扫描应用部署目录便可实现热部署功能,减少系统在更新时对资源的占用,提高更新效率,提升用户体验。
附图说明
图1为本发明实现热部署的处理方法的流程示意图;
图2为本发明提供的类文件的加载处理方法的流程示意图;
图3为本发明提供的运行servlet类文件的方法的流程示意图;
图4为本发明提供的调用facade类文件的方法的流程示意图;
图5为本发明提供的调用除facade类文件以外的其他类文件的方法的流程示意图;
图6为本发明实现热部署的处理装置的结构示意图;
图7为本发明实现热部署的处理装置包括的类加载模块的结构示意图;
图8为本发明实现热部署的处理装置包括的类运行模块的结构示意图。
具体实施方式
本发明的基本思想是:预先配置类管理列表,所述类管理列表中记录着不需要重新启动系统就能实时更新的类文件的文件名,当接收到上传的新的类文件和更新文件列表时,判断所述更新文件列表中的类文件的文件名是否在所述类管理列表中,若判断的结果为是,则加载文件名在类管理列表中的类文件,创建新实例替换旧实例;若判断的结果为否,则说明不能自动加载新的类文件, 需等到服务器重新启动时才开始生效。
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图1为本发明实现热部署的处理方法流程示意图,如图1所示,该方法包括以下几个步骤:
步骤101~步骤102:服务器接收上传的新的类文件替换旧的类文件,并接收更新文件列表;
这里,以模型视图控制器(MVC,Model View Controller)三层架构为例,将类文件按层次分为三种:sevlet类、facade类和其他类;其中,所述其他类包括:工具类、辅助类、数据库实体类等;
所述更新文件列表中存储着待更新的类文件的文件名;其中,所述类文件可以是sevlet类的类文件、facade类的类文件或其他类的类文件;
本步骤还包括接收更新消息的步骤。
步骤103:判断所述更新文件列表中的类文件的文件名是否在类管理列表中,若判断的结果为是,执行步骤104;若判断的结果为否,则说明不能自动加载新的类文件,更新不生效,需等到服务器下次重启时才开始生效;
这里,所述类管理列表中记录有允许热部署的类文件的文件名,可在类文件更新开始前自行设定;
所述服务器一般是Web服务器。
步骤104:加载文件名在类管理列表中的类文件,创建新实例替换旧实例;
这里,所述加载文件名在类管理列表中的类文件可以采用新定义的用户类加载器(CustomClassloader)或现有的类加载器进行加载;
所述创建新实例替换旧实例为:创建文件名在类管理列表中的类文件的新实例,用所述类文件的新实例替换所述类文件的旧实例,这样能使更新实时生效;
这里,所述sevlet类的类文件、facade类的类文件或其他类的类文件的更新过程均可以采用图1所示的处理流程,并且可单独实现其中任意一种类文件的更新。
进一步的,在所述接收上传的新的类文件替换旧的类文件之前,该方法还包括:服务器在启动时加载类文件的过程,包括:
当服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名,判断所述类文件的文件名是否在类管理列表中,若判断的结果为是,则通过CustomClassloader加载所述类文件并实例化,存储所述类文件的实例与对应的URL的映射关系;
若判断的结果为否,则通过应用类加载器(AppClassloader)加载所述类文件并实例化,存储所述类文件的实例与对应的URL的映射关系。
这里,所述加载类文件包括加载servlet类文件、facade类文件和其他类文件,三种类文件的加载过程均采用上述加载过程,此处不再一一详细说明。
进一步的,该方法还包括:
当所述类文件为servlet类文件且接收到页面请求时,提取所述页面请求中的URL,根据所述URL查找存储的servlet实例与URL的映射关系,若找到所述URL,则获取与所述URL对应的servlet实例,调用所述servlet实例的处理函数处理所述页面请求,返回处理结果;
若找不到所述URL,则返回错误提示信息或不执行任何操作。
这里,所述调用所述servlet实例的处理函数处理所述页面请求为调用所述servlet实例的process函数处理所述页面请求。
进一步的,所述调用所述servlet实例的处理方法处理所述页面请求时,该方法还包括:
servlet实例的处理函数调用下层的facade类文件,在确定存在所述facade类文件的类定义且所述facade类文件没有被加载并实例化之后,判断所述facade类文件的文件名是否在类管理列表中,若判断的结果为是,则通过CustomClassloader加载所述facade类文件并实例化,返回facade实例;若判断的结果为否,则通过AppClassloader加载所述facade类文件并实例化,返回facade实例。
进一步的,该方法还包括:
所述servlet实例的处理函数调用下层的除facade类文件以外的其他类文件时,判断所述其他类文件的文件名是否在类管理列表中,若判断的结果为是,则通过CustomClassloader加载所述其他类文件并实例化,返回所述其他类文件的实例;若判断的结果为否,则通过AppClassloader加载所述类文件并实例化,返回所述其他类文件的实例。
上述方法中,类文件的运行过程具体为:服务器接收到用户的页面请求后,通过提取并解析URL找到对应的servlet类文件执行逻辑处理并调用下层各数据处理接口的facade类文件或其他类文件,最后将处理结果返回给用户,因此,类文件的运行按照运行servlet类文件、调用相应的facade类文件或其他类文件的顺序依次进行。
图2为本发明提供的类文件的加载处理方法的流程示意图,如图2所示,包括以下步骤:
步骤201~步骤202:当服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名,判断所述文件名是否在类管理列表中,若判断的结果为是,执行步骤203;否则,执行步骤204;
这里,所述类管理列表中记录有允许热部署的类文件的文件名,可在类文件加载开始前自行设定。
步骤203:通过CustomClassloader加载所述类文件并实例化,存储所述类文件的实例与对应的URL的映射关系。
步骤204:通过AppClassloader加载所述类文件并实例化,存储所述类文件的实例与对应的URL的映射关系。
这里,sevlet类的类文件、facade类的类文件或其他类的类文件的加载过程均可以采用图2所示的处理流程,并且可单独实现其中任意一种类文件的加载。
图3为本发明提供的运行servlet类文件的方法的流程示意图,如图3所示,包括以下步骤:
步骤301~步骤302:当类文件为servlet类文件且接收到页面请求时,提取所述页面请求中的URL,并判断所述URL是否在存储的实例与URL的映射关 系中,若判断的结果为是,执行步骤303;否则,执行步骤304。
步骤303:获取与所述URL对应的servlet实例,调用所述servlet实例的process方法处理所述页面请求,返回处理结果。
步骤304:返回错误提示信息或不执行任何操作。
图4为本发明提供的调用facade类文件的方法的流程示意图,如图4所示,包括以下步骤:
步骤401~步骤402:调用facade类文件,判断是否存在所述facade类文件的类定义,若判断的结果为是,执行步骤404;否则,执行步骤403:返回错误信息;
这里,本发明采用facade工厂模式,即存在一个facadefactory,所述facadefactory负责加载和实例化所有的facade类文件,外部和facade之间通过acadefactory获取facade实例。
上述方法中,所述判断是否存在所述facade类文件的类定义为判断facadefactory中是否存在所述调用的facade类文件的类定义。
步骤404:判断所述facade类文件是否已加载并实例化,若判断的结果为是,执行步骤405:返回facade实例;若判断的结果否,执行步骤406;
步骤406:判断所述facade类文件的文件名是否在类管理列表中,若判断的结果为是,执行步骤407;否则,执行步骤408;
步骤407:通过CustomClassloader加载所述facade类文件并实例化,返回facade实例;
步骤408:通过AppClassloader加载所述facade类文件并实例化,返回facade实例。
图5为本发明提供的调用除facade类文件以外的其他类文件的方法的流程示意图,如图5所示,包括以下步骤:
步骤501~步骤502:调用其他类文件,判断所述其他类文件的文件名是否在类管理列表中,若判断的结果为是,执行步骤503;否则,执行步骤504。
这里,所述其他类文件为除facade类文件以外的其他类文件,包括:工具 类、辅助类、数据库实体类等类文件。
步骤503:通过CustomClassloader加载所述其他类文件并实例化,返回所述其他类文件的实例。
步骤504:通过AppClassloader加载所述类文件并实例化,返回所述其他类文件的实例。
为实现上述方法,本发明还提供了一种实现热部署的处理装置,设置在服务器上,所述处理装置包括类更新模块60,如图6所示,所述类更新模块60包括:接收模块61、第一存储模块62、第一确定模块63和第一用户类加载模块64;其中,
所述接收模块61,用于接收上传的新的类文件以替换旧的类文件,并接收更新文件列表;
所述第一存储模块62,用于存储类文件,并存储更新文件列表和类管理列表;
所述第一确定模块63,用于确定所述更新文件列表中的类文件的文件名在类管理列表中时,触发第一用户类加载模块64;
所述第一用户类加载模块64,用于加载文件名在类管理列表中的类文件,创建新实例替换旧实例,这样能使更新实时生效;这里可以采用新定义的CustomClassloader或现有的类加载器进行加载。
进一步的,所述处理装置还包括类加载模块70,如图7所示,所述类加载模块70包括:扫描模块71、第二确定模块72、第二用户类加载模块73、第一应用类加载模块74和第二存储模块75;其中,
所述扫描模块71,用于在服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名;
所述第二确定模块72,用于确定所述类文件的文件名在类管理列表中时,触发第二用户类加载模块73;确定所述类文件的文件名不在类管理列表中时,触发第一应用类加载模块74;
所述第二用户类加载模块73,用于通过CustomClassloader加载文件名在类 管理列表中的类文件并实例化,将所述类文件的实例与对应的URL的映射关系发送给第二存储模块75;
所述第一应用类加载模块74,用于通过AppClassloader加载文件名不在类管理列表中的类文件并实例化,将所述类文件的实例与对应的URL的映射关系发送给第二存储模块75;
相应的,所述第二存储模块75,用于存储所述实例与对应的URL的映射关系;
上述方案中,所述第一存储模块62和所述第二存储模块75可采用同一个存储模块;所述第一确定模块63和所述第二确定模块72可采用同一个确定模块;所述第一用户类加载模块64和所述第二用户类加载模块73可采用同一个用户类加载模块。
进一步的,所述处理装置还包括类运行模块80,如图8所示,所述类运行模块80包括:提取模块81、查找获取模块82和运行模块83;其中,
所述提取模块81,用于当所述类文件为servlet类文件且接收到页面请求时,提取所述页面请求中的URL,将所述URL发送给查找获取模块82;
所述查找获取模块82,用于根据所述提取模块81发送的URL查找存储的servlet实例与URL的映射关系,获取与所述URL对应的servlet实例,将所述servlet实例发送给运行模块83;
所述运行模块83,用于根据所述查找获取模块82发送的servlet实例,调用所述servlet实例的函数方法处理所述页面请求,返回处理结果;还用于所述查找获取模块82没有找到所述URL对应的servlet实例时,生成并返回错误提示信息。
进一步的,所述类运行模块80还包括:调用模块84、第三用户类加载模块85和第二应用类加载模块86;其中,
所述调用模块84,用于servlet实例的处理函数调用下层的facade类文件时,在确定存在所述facade类文件的类定义且所述facade类文件没有被加载并实例化之后,判断所述facade类文件的文件名是否在类管理列表中,在判断结果为 是时,触发第三用户类加载模块85;在判断结果为否时,触发第二应用类加载模块86;
所述第三用户类加载模块85,用于通过CustomClassloader加载文件名在类管理列表中的facade类文件并实例化,返回facade实例;
所述第二应用类加载模块86,用于通过AppClassloader加载文件名不在类管理列表中的facade类文件并实例化,返回facade实例。
进一步的,所述调用模块84,还用于当servlet实例的处理函数调用下层的除facade类文件以外的其他类文件时,判断所述其他类文件的文件名是否在类管理列表中,在判断结果为是时,触发第三用户类加载模块85;在判断结果为否时,触发第二应用类加载模块86;
所述第三用户类加载模块85,还用于通过CustomClassloader加载文件名在类管理列表中的所述其他类文件并实例化,返回所述其他类文件的实例;
所述第二应用类加载模块86,还用于通过AppClassloader加载文件名不在类管理列表中的所述其他类文件并实例化,返回所述其他类文件的实例。
上述方案中,所述第三用户类加载模块85与所述第二用户类加载模块73、所述第一用户类加载模块64可采用同一个用户类加载模块;所述第二应用类加载模块86与所述应用类加载模块74可采用同一个用户类加载模块。
本发明还提供一种服务器,所述服务器包括上述实现热部署的处理装置。
本发明实施例所述实现热部署的处理方法如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
相应的,本发明实施例还提供一种计算机存储介质,其中存储有计算机程序,该计算机程序用于执行本发明实施例的实现热部署的处理方法。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

一种实现热部署的处理方法、装置及服务器.pdf_第1页
第1页 / 共17页
一种实现热部署的处理方法、装置及服务器.pdf_第2页
第2页 / 共17页
一种实现热部署的处理方法、装置及服务器.pdf_第3页
第3页 / 共17页
点击查看更多>>
资源描述

《一种实现热部署的处理方法、装置及服务器.pdf》由会员分享,可在线阅读,更多相关《一种实现热部署的处理方法、装置及服务器.pdf(17页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104102502A43申请公布日20141015CN104102502A21申请号201310121779822申请日20130409G06F9/44520060171申请人腾讯科技(深圳)有限公司地址518044广东省深圳市福田区振兴路赛格科技园2栋东403室72发明人吴帅74专利代理机构北京派特恩知识产权代理有限公司11270代理人张颖玲张振伟54发明名称一种实现热部署的处理方法、装置及服务器57摘要本发明公开了一种实现热部署的处理方法,该方法包括接收上传的新的类文件替换旧的类文件,并接收更新文件列表;确定所述更新文件列表中的类文件的文件名在类管理列表中,加载文件名在类。

2、管理列表中的类文件,创建新实例替换旧实例;其中,所述类管理列表记录有允许热部署的类文件的文件名;本发明同时还公开了一种实现热部署的处理装置及服务器,通过本发明的方案,使服务器不必一直扫描应用部署目录便可实现热部署功能,减少系统在更新时对资源的占用,提高更新效率,提升用户体验。51INTCL权利要求书3页说明书8页附图5页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书8页附图5页10申请公布号CN104102502ACN104102502A1/3页21一种实现热部署的处理方法,其特征在于,该处理方法包括接收上传的新的类文件替换旧的类文件,并接收更新文件列表;确定所述更新文件。

3、列表中的类文件的文件名在类管理列表中,加载文件名在类管理列表中的类文件,创建新实例替换旧实例;所述类管理列表中记录有允许热部署的类文件的文件名。2根据权利要求1所述的处理方法,其特征在于,在所述接收上传的新的类文件替换旧的类文件之前,该方法还包括服务器在启动时加载类文件的过程,包括当服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名,判断所述类文件的文件名是否在类管理列表中,若判断的结果为是,则通过用户类加载器CUSTOMCLASSLOADER加载所述类文件并实例化,存储所述类文件的实例与对应的统一资源定位符URL的映射关系;若判断的结果为否,则通过应用类加载器APPCLASSLO。

4、ADER加载所述类文件并实例化,存储所述类文件的实例与对应的URL的映射关系。3根据权利要求2所述的处理方法,其特征在于,该方法还包括当所述类文件为SERVLET类文件且接收到页面请求时,提取所述页面请求中的URL,根据所述URL查找存储的SERVLET实例与URL的映射关系,若找到所述URL,则获取与所述URL对应的SERVLET实例,调用所述SERVLET实例的处理函数处理所述页面请求,返回处理结果;若找不到所述URL,则返回错误提示信息或不执行任何操作。4根据权利要求3所述的处理方法,其特征在于,所述调用所述SERVLET实例的处理函数处理所述页面请求时,该方法还包括所述SERVLET实。

5、例的处理函数调用下层的FACADE类文件,在确定存在所述FACADE类文件的类定义且所述FACADE类文件没有被加载并实例化之后,判断所述FACADE类文件的文件名是否在类管理列表中,若判断的结果为是,则通过CUSTOMCLASSLOADER加载所述FACADE类文件并实例化,返回FACADE实例;若判断的结果为否,则通过APPCLASSLOADER加载所述FACADE类文件并实例化,返回FACADE实例。5根据权利要求4所述的处理方法,其特征在于,该方法还包括所述SERVLET实例的处理函数调用下层的除FACADE类文件以外的其他类文件,判断所述其他类文件的文件名是否在类管理列表中,若判断的。

6、结果为是,则通过CUSTOMCLASSLOADER加载所述其他类文件并实例化,返回所述其他类文件的实例;若判断的结果为否,则通过APPCLASSLOADER加载所述其他类文件并实例化,返回所述其他类文件的实例。6一种实现热部署的处理装置,其特征在于,所述处理装置包括类更新模块,所述类更新模块包括接收模块、第一存储模块、第一确定模块和第一用户类加载模块;其中,所述接收模块,用于接收上传的新的类文件以替换旧的类文件,并接收更新文件列表;所述第一存储模块,用于存储类文件,并存储更新文件列表和类管理列表;所述第一确定模块,用于确定所述更新文件列表中的类文件的文件名在类管理列表中时,触发第一用户类加载模。

7、块;权利要求书CN104102502A2/3页3所述第一用户类加载模块,用于加载文件名在类管理列表中的类文件,创建新实例替换旧实例。7根据权利要求6所述的处理装置,其特征在于,所述处理装置还包括类加载模块,所述类加载模块包括扫描模块、第二确定模块、第二用户类加载模块、第一应用类加载模块和第二存储模块;其中,所述扫描模块,用于在服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名;所述第二确定模块,用于确定所述类文件的文件名在类管理列表中时,触发第二用户类加载模块;确定所述类文件的文件名不在类管理列表中时,触发第一应用类加载模块;所述第二用户类加载模块,用于通过CUSTOMCLASSL。

8、OADER加载文件名在类管理列表中的类文件并实例化,将所述类文件的实例与对应的URL的映射关系发送给第二存储模块;所述第一应用类加载模块,用于通过APPCLASSLOADER加载文件名不在类管理列表中的类文件并实例化,将所述类文件的实例与对应的URL的映射关系发送给第二存储模块;相应的,所述第二存储模块,用于存储所述实例与对应的URL的映射关系。8根据权利要求6所述的处理装置,其特征在于,所述处理装置还包括类运行模块,所述类运行模块包括提取模块、查找获取模块和运行模块;其中,所述提取模块,用于当所述类文件为SERVLET类文件且接收到页面请求时,提取所述页面请求中的URL,将所述URL发送给查。

9、找获取模块;所述查找获取模块,用于根据所述提取模块发送的URL查找存储的SERVLET实例与URL的映射关系,获取与所述URL对应的SERVLET实例,将所述SERVLET实例发送给运行模块;所述运行模块,用于根据所述查找获取模块发送的SERVLET实例,调用所述SERVLET实例的处理函数处理所述页面请求,返回处理结果;还用于所述查找获取模块没有找到所述URL对应的SERVLET实例时,生成并返回错误提示信息。9根据权利要求8所述的处理装置,其特征在于,所述运行模块还包括调用模块、第三用户类加载模块、第二应用类加载模块;其中,所述调用模块,用于SERVLET实例的处理函数调用下层的FACAD。

10、E类文件,在确定存在所述FACADE类文件的类定义且所述FACADE类文件没有被加载并实例化之后,判断所述FACADE类文件的文件名是否在类管理列表中,在判断结果为是时,触发第三用户类加载模块;在判断结果为否时,触发第二应用类加载模块;所述第三用户类加载模块,用于通过CUSTOMCLASSLOADER加载文件名在类管理列表中的FACADE类文件并实例化,返回FACADE实例;所述第二应用类加载模块,用于通过APPCLASSLOADER加载文件名不在类管理列表中的FACADE类文件并实例化,返回FACADE实例。10根据权利要求9所述的处理装置,其特征在于,所述调用模块,还用于当SERVLET实。

11、例的处理函数调用下层的除FACADE类文件以外的其他类文件时,判断所述其他类文件的文件名是否在类管理列表中,在判断结果为是时,触发第三用户类加载模块;在判断结果为否时,触发第二应用类加载模块;所述第三用户类加载模块,还用于通过CUSTOMCLASSLOADER加载文件名在类管理列表中的所述其他类文件并实例化,返回所述其他类文件的实例;权利要求书CN104102502A3/3页4所述第二应用类加载模块,还用于通过APPCLASSLOADER加载文件名不在类管理列表中的所述其他类文件并实例化,返回所述其他类文件的实例。11一种服务器,其特征在于,所述服务器包括如权利要求6至10任一项所述的实现热部。

12、署的处理装置。权利要求书CN104102502A1/8页5一种实现热部署的处理方法、装置及服务器技术领域0001本发明涉及计算机技术,具体涉及一种实现热部署的处理方法、装置及服务器。背景技术0002热部署,即为在应用正在运行的时候升级软件,却不需要重新启动应用。现有的大部分网页WEB服务器,例如APACHE软件基金会开发的应用服务器TOMCAT、IBM公司开发的软件平台WEBSPHERE、美国ORACLE公司开发的应用服务器WEBLOGIC等,都提供调试模式或者类似功能,当WEB服务器以调试模式运行时,WEB服务器能够实现热部署功能。但是,现有技术在实际运行中存在两个不足之处一是在更新过程中,。

13、WEB服务器会一直扫描应用部署目录,造成比较大的系统开销,影响服务效率;二是WEB服务器需要检查每个文件是否被更改或者是否有新的文件,会造成资源的浪费,影响更新效率。发明内容0003有鉴于此,本发明的主要目的在于提供一种实现热部署的处理方法、装置及服务器,使服务器不必一直扫描应用部署目录便可实现热部署功能,减少系统在更新时对资源的占用,提高更新效率,提升用户体验。0004为达到上述目的,本发明的技术方案是这样实现的0005本发明提供了一种实现热部署的处理方法,该处理方法包括0006接收上传的新的类文件替换旧的类文件,并接收更新文件列表;0007确定所述更新文件列表中的类文件的文件名在类管理列表。

14、中,加载文件名在类管理列表中的类文件,创建新实例替换旧实例;所述类管理列表中记录有允许热部署的类文件的文件名。0008上述方案中,在所述接收上传的新的类文件替换旧的类文件之前,该方法还包括服务器在启动时加载类文件的过程,包括0009当服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名,判断所述类文件的文件名是否在类管理列表中,若判断的结果为是,则通过用户类加载器CUSTOMCLASSLOADER加载所述类文件并实例化,存储所述类文件的实例与对应的统一资源定位符URL,UNIFORMRESOURCELOCATOR的映射关系;0010若判断的结果为否,则通过应用类加载器APPCLASS。

15、LOADER加载所述类文件并实例化,存储所述类文件的实例与对应的URL的映射关系。0011上述方案中,该方法还包括0012当所述类文件为JAVA伺服小程序SEVLET类文件且接收到页面请求时,提取所述页面请求中的URL,根据所述URL查找存储的SERVLET实例与URL的映射关系,若找到所述URL,则获取与所述URL对应的SERVLET实例,调用所述SERVLET实例的处理函数处理所述页面请求,返回处理结果;0013若找不到所述URL,则返回错误提示信息或不执行任何操作。说明书CN104102502A2/8页60014上述方案中,所述调用所述SERVLET实例的处理函数处理所述页面请求时,该方。

16、法还包括0015所述SERVLET实例的处理函数调用下层的外观模式FACADE类文件,在确定存在所述FACADE类文件的类定义且所述FACADE类文件没有被加载并实例化之后,判断所述FACADE类文件的文件名是否在类管理列表中,若判断的结果为是,则通过CUSTOMCLASSLOADER加载所述FACADE类文件并实例化,返回FACADE实例;若判断的结果为否,则通过APPCLASSLOADER加载所述FACADE类文件并实例化,返回FACADE实例。0016上述方案中,该方法还包括0017所述SERVLET实例的处理函数调用下层的除FACADE类文件以外的其他类文件,判断所述其他类文件的文件名。

17、是否在类管理列表中,若判断的结果为是,则通过CUSTOMCLASSLOADER加载所述其他类文件并实例化,返回所述其他类文件的实例;若判断的结果为否,则通过APPCLASSLOADER加载所述其他类文件并实例化,返回所述其他类文件的实例。0018本发明还提供了一种实现热部署的处理装置,所述处理装置包括类更新模块,所述类更新模块包括接收模块、第一存储模块、第一确定模块和第一用户类加载模块;其中,0019所述接收模块,用于接收上传的新的类文件以替换旧的类文件,并接收更新文件列表;0020所述第一存储模块,用于存储类文件,并存储更新文件列表和类管理列表;0021所述第一确定模块,用于确定所述更新文件。

18、列表中的类文件的文件名在类管理列表中时,触发第一用户类加载模块;0022所述第一用户类加载模块,用于加载文件名在类管理列表中的类文件,创建新实例替换旧实例。0023上述方案中,所述处理装置还包括类加载模块,所述类加载模块包括扫描模块、第二确定模块、第二用户类加载模块、第一应用类加载模块和第二存储模块;其中,0024所述扫描模块,用于在服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名;0025所述第二确定模块,用于确定所述类文件的文件名在类管理列表中时,触发第二用户类加载模块;确定所述类文件的文件名不在类管理列表中时,触发第一应用类加载模块;0026所述第二用户类加载模块,用于通过。

19、CUSTOMCLASSLOADER加载文件名在类管理列表中的类文件并实例化,将所述类文件的实例与对应的URL的映射关系发送给第二存储模块;0027所述第一应用类加载模块,用于通过APPCLASSLOADER加载文件名不在类管理列表中的类文件并实例化,将所述类文件的实例与对应的URL的映射关系发送给第二存储模块;0028相应的,所述第二存储模块,用于存储所述实例与对应的URL的映射关系。0029上述方案中,所述处理装置还包括类运行模块,所述类运行模块包括提取模块、查找获取模块和运行模块;其中,说明书CN104102502A3/8页70030所述提取模块,用于当所述类文件为SERVLET类文件且接。

20、收到页面请求时,提取所述页面请求中的URL,将所述URL发送给查找获取模块;0031所述查找获取模块,用于根据所述提取模块发送的URL查找存储的SERVLET实例与URL的映射关系,获取与所述URL对应的SERVLET实例,将所述SERVLET实例发送给运行模块;0032所述运行模块,用于根据所述查找获取模块发送的SERVLET实例,调用所述SERVLET实例的处理函数处理所述页面请求,返回处理结果;还用于所述查找获取模块没有找到所述URL对应的SERVLET实例时,生成并返回错误提示信息。0033上述方案中,所述运行模块还包括调用模块、第三用户类加载模块、第二应用类加载模块;其中,0034所。

21、述调用模块,用于SERVLET实例的处理函数调用下层的FACADE类文件,在确定存在所述FACADE类文件的类定义且所述FACADE类文件没有被加载并实例化之后,判断所述FACADE类文件的文件名是否在类管理列表中,在判断结果为是时,触发第三用户类加载模块;在判断结果为否时,触发第二应用类加载模块;0035所述第三用户类加载模块,用于通过CUSTOMCLASSLOADER加载文件名在类管理列表中的FACADE类文件并实例化,返回FACADE实例;0036所述第二应用类加载模块,用于通过APPCLASSLOADER加载文件名不在类管理列表中的FACADE类文件并实例化,返回FACADE实例。00。

22、37上述方案中,所述调用模块,还用于当SERVLET实例的处理函数调用下层的除FACADE类文件以外的其他类文件时,判断所述其他类文件的文件名是否在类管理列表中,在判断结果为是时,触发第三用户类加载模块;在判断结果为否时,触发第二应用类加载模块;0038所述第三用户类加载模块,还用于通过CUSTOMCLASSLOADER加载文件名在类管理列表中的所述其他类文件并实例化,返回所述其他类文件的实例;0039所述第二应用类加载模块,还用于通过APPCLASSLOADER加载文件名不在类管理列表中的所述其他类文件并实例化,返回所述其他类文件的实例。0040本发明还提供了一种服务器,所述服务器包括本发明。

23、所述的实现热部署的处理装置。0041本发明提供的一种实现热部署的处理方法、装置及服务器,接收上传的新的类文件替换旧的类文件,并接收更新文件列表;确定所述更新文件列表中的类文件的文件名在类管理列表中,加载文件名在类管理列表中的类文件,创建新实例替换旧实例;所述类管理列表中记录有允许热部署的类文件的文件名;如此,使服务器不必一直扫描应用部署目录便可实现热部署功能,减少系统在更新时对资源的占用,提高更新效率,提升用户体验。附图说明0042图1为本发明实现热部署的处理方法的流程示意图;0043图2为本发明提供的类文件的加载处理方法的流程示意图;0044图3为本发明提供的运行SERVLET类文件的方法的。

24、流程示意图;0045图4为本发明提供的调用FACADE类文件的方法的流程示意图;说明书CN104102502A4/8页80046图5为本发明提供的调用除FACADE类文件以外的其他类文件的方法的流程示意图;0047图6为本发明实现热部署的处理装置的结构示意图;0048图7为本发明实现热部署的处理装置包括的类加载模块的结构示意图;0049图8为本发明实现热部署的处理装置包括的类运行模块的结构示意图。具体实施方式0050本发明的基本思想是预先配置类管理列表,所述类管理列表中记录着不需要重新启动系统就能实时更新的类文件的文件名,当接收到上传的新的类文件和更新文件列表时,判断所述更新文件列表中的类文件。

25、的文件名是否在所述类管理列表中,若判断的结果为是,则加载文件名在类管理列表中的类文件,创建新实例替换旧实例;若判断的结果为否,则说明不能自动加载新的类文件,需等到服务器重新启动时才开始生效。0051下面结合附图及具体实施例对本发明再作进一步详细的说明。0052图1为本发明实现热部署的处理方法流程示意图,如图1所示,该方法包括以下几个步骤0053步骤101步骤102服务器接收上传的新的类文件替换旧的类文件,并接收更新文件列表;0054这里,以模型视图控制器MVC,MODELVIEWCONTROLLER三层架构为例,将类文件按层次分为三种SEVLET类、FACADE类和其他类;其中,所述其他类包括。

26、工具类、辅助类、数据库实体类等;0055所述更新文件列表中存储着待更新的类文件的文件名;其中,所述类文件可以是SEVLET类的类文件、FACADE类的类文件或其他类的类文件;0056本步骤还包括接收更新消息的步骤。0057步骤103判断所述更新文件列表中的类文件的文件名是否在类管理列表中,若判断的结果为是,执行步骤104;若判断的结果为否,则说明不能自动加载新的类文件,更新不生效,需等到服务器下次重启时才开始生效;0058这里,所述类管理列表中记录有允许热部署的类文件的文件名,可在类文件更新开始前自行设定;0059所述服务器一般是WEB服务器。0060步骤104加载文件名在类管理列表中的类文件。

27、,创建新实例替换旧实例;0061这里,所述加载文件名在类管理列表中的类文件可以采用新定义的用户类加载器CUSTOMCLASSLOADER或现有的类加载器进行加载;0062所述创建新实例替换旧实例为创建文件名在类管理列表中的类文件的新实例,用所述类文件的新实例替换所述类文件的旧实例,这样能使更新实时生效;0063这里,所述SEVLET类的类文件、FACADE类的类文件或其他类的类文件的更新过程均可以采用图1所示的处理流程,并且可单独实现其中任意一种类文件的更新。0064进一步的,在所述接收上传的新的类文件替换旧的类文件之前,该方法还包括服务器在启动时加载类文件的过程,包括0065当服务器启动并加。

28、载类文件时,扫描类文件目录里的所有类文件的文件名,判断说明书CN104102502A5/8页9所述类文件的文件名是否在类管理列表中,若判断的结果为是,则通过CUSTOMCLASSLOADER加载所述类文件并实例化,存储所述类文件的实例与对应的URL的映射关系;0066若判断的结果为否,则通过应用类加载器APPCLASSLOADER加载所述类文件并实例化,存储所述类文件的实例与对应的URL的映射关系。0067这里,所述加载类文件包括加载SERVLET类文件、FACADE类文件和其他类文件,三种类文件的加载过程均采用上述加载过程,此处不再一一详细说明。0068进一步的,该方法还包括0069当所述类。

29、文件为SERVLET类文件且接收到页面请求时,提取所述页面请求中的URL,根据所述URL查找存储的SERVLET实例与URL的映射关系,若找到所述URL,则获取与所述URL对应的SERVLET实例,调用所述SERVLET实例的处理函数处理所述页面请求,返回处理结果;0070若找不到所述URL,则返回错误提示信息或不执行任何操作。0071这里,所述调用所述SERVLET实例的处理函数处理所述页面请求为调用所述SERVLET实例的PROCESS函数处理所述页面请求。0072进一步的,所述调用所述SERVLET实例的处理方法处理所述页面请求时,该方法还包括0073SERVLET实例的处理函数调用下层。

30、的FACADE类文件,在确定存在所述FACADE类文件的类定义且所述FACADE类文件没有被加载并实例化之后,判断所述FACADE类文件的文件名是否在类管理列表中,若判断的结果为是,则通过CUSTOMCLASSLOADER加载所述FACADE类文件并实例化,返回FACADE实例;若判断的结果为否,则通过APPCLASSLOADER加载所述FACADE类文件并实例化,返回FACADE实例。0074进一步的,该方法还包括0075所述SERVLET实例的处理函数调用下层的除FACADE类文件以外的其他类文件时,判断所述其他类文件的文件名是否在类管理列表中,若判断的结果为是,则通过CUSTOMCLAS。

31、SLOADER加载所述其他类文件并实例化,返回所述其他类文件的实例;若判断的结果为否,则通过APPCLASSLOADER加载所述类文件并实例化,返回所述其他类文件的实例。0076上述方法中,类文件的运行过程具体为服务器接收到用户的页面请求后,通过提取并解析URL找到对应的SERVLET类文件执行逻辑处理并调用下层各数据处理接口的FACADE类文件或其他类文件,最后将处理结果返回给用户,因此,类文件的运行按照运行SERVLET类文件、调用相应的FACADE类文件或其他类文件的顺序依次进行。0077图2为本发明提供的类文件的加载处理方法的流程示意图,如图2所示,包括以下步骤0078步骤201步骤2。

32、02当服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名,判断所述文件名是否在类管理列表中,若判断的结果为是,执行步骤203;否则,执行步骤204;0079这里,所述类管理列表中记录有允许热部署的类文件的文件名,可在类文件加载开始前自行设定。0080步骤203通过CUSTOMCLASSLOADER加载所述类文件并实例化,存储所述类文件的说明书CN104102502A6/8页10实例与对应的URL的映射关系。0081步骤204通过APPCLASSLOADER加载所述类文件并实例化,存储所述类文件的实例与对应的URL的映射关系。0082这里,SEVLET类的类文件、FACADE类的类文。

33、件或其他类的类文件的加载过程均可以采用图2所示的处理流程,并且可单独实现其中任意一种类文件的加载。0083图3为本发明提供的运行SERVLET类文件的方法的流程示意图,如图3所示,包括以下步骤0084步骤301步骤302当类文件为SERVLET类文件且接收到页面请求时,提取所述页面请求中的URL,并判断所述URL是否在存储的实例与URL的映射关系中,若判断的结果为是,执行步骤303;否则,执行步骤304。0085步骤303获取与所述URL对应的SERVLET实例,调用所述SERVLET实例的PROCESS方法处理所述页面请求,返回处理结果。0086步骤304返回错误提示信息或不执行任何操作。0。

34、087图4为本发明提供的调用FACADE类文件的方法的流程示意图,如图4所示,包括以下步骤0088步骤401步骤402调用FACADE类文件,判断是否存在所述FACADE类文件的类定义,若判断的结果为是,执行步骤404;否则,执行步骤403返回错误信息;0089这里,本发明采用FACADE工厂模式,即存在一个FACADEFACTORY,所述FACADEFACTORY负责加载和实例化所有的FACADE类文件,外部和FACADE之间通过ACADEFACTORY获取FACADE实例。0090上述方法中,所述判断是否存在所述FACADE类文件的类定义为判断FACADEFACTORY中是否存在所述调用的。

35、FACADE类文件的类定义。0091步骤404判断所述FACADE类文件是否已加载并实例化,若判断的结果为是,执行步骤405返回FACADE实例;若判断的结果否,执行步骤406;0092步骤406判断所述FACADE类文件的文件名是否在类管理列表中,若判断的结果为是,执行步骤407;否则,执行步骤408;0093步骤407通过CUSTOMCLASSLOADER加载所述FACADE类文件并实例化,返回FACADE实例;0094步骤408通过APPCLASSLOADER加载所述FACADE类文件并实例化,返回FACADE实例。0095图5为本发明提供的调用除FACADE类文件以外的其他类文件的方法。

36、的流程示意图,如图5所示,包括以下步骤0096步骤501步骤502调用其他类文件,判断所述其他类文件的文件名是否在类管理列表中,若判断的结果为是,执行步骤503;否则,执行步骤504。0097这里,所述其他类文件为除FACADE类文件以外的其他类文件,包括工具类、辅助类、数据库实体类等类文件。0098步骤503通过CUSTOMCLASSLOADER加载所述其他类文件并实例化,返回所述其他类文件的实例。0099步骤504通过APPCLASSLOADER加载所述类文件并实例化,返回所述其他类文件说明书CN104102502A107/8页11的实例。0100为实现上述方法,本发明还提供了一种实现热部。

37、署的处理装置,设置在服务器上,所述处理装置包括类更新模块60,如图6所示,所述类更新模块60包括接收模块61、第一存储模块62、第一确定模块63和第一用户类加载模块64;其中,0101所述接收模块61,用于接收上传的新的类文件以替换旧的类文件,并接收更新文件列表;0102所述第一存储模块62,用于存储类文件,并存储更新文件列表和类管理列表;0103所述第一确定模块63,用于确定所述更新文件列表中的类文件的文件名在类管理列表中时,触发第一用户类加载模块64;0104所述第一用户类加载模块64,用于加载文件名在类管理列表中的类文件,创建新实例替换旧实例,这样能使更新实时生效;这里可以采用新定义的C。

38、USTOMCLASSLOADER或现有的类加载器进行加载。0105进一步的,所述处理装置还包括类加载模块70,如图7所示,所述类加载模块70包括扫描模块71、第二确定模块72、第二用户类加载模块73、第一应用类加载模块74和第二存储模块75;其中,0106所述扫描模块71,用于在服务器启动并加载类文件时,扫描类文件目录里的所有类文件的文件名;0107所述第二确定模块72,用于确定所述类文件的文件名在类管理列表中时,触发第二用户类加载模块73;确定所述类文件的文件名不在类管理列表中时,触发第一应用类加载模块74;0108所述第二用户类加载模块73,用于通过CUSTOMCLASSLOADER加载文。

39、件名在类管理列表中的类文件并实例化,将所述类文件的实例与对应的URL的映射关系发送给第二存储模块75;0109所述第一应用类加载模块74,用于通过APPCLASSLOADER加载文件名不在类管理列表中的类文件并实例化,将所述类文件的实例与对应的URL的映射关系发送给第二存储模块75;0110相应的,所述第二存储模块75,用于存储所述实例与对应的URL的映射关系;0111上述方案中,所述第一存储模块62和所述第二存储模块75可采用同一个存储模块;所述第一确定模块63和所述第二确定模块72可采用同一个确定模块;所述第一用户类加载模块64和所述第二用户类加载模块73可采用同一个用户类加载模块。011。

40、2进一步的,所述处理装置还包括类运行模块80,如图8所示,所述类运行模块80包括提取模块81、查找获取模块82和运行模块83;其中,0113所述提取模块81,用于当所述类文件为SERVLET类文件且接收到页面请求时,提取所述页面请求中的URL,将所述URL发送给查找获取模块82;0114所述查找获取模块82,用于根据所述提取模块81发送的URL查找存储的SERVLET实例与URL的映射关系,获取与所述URL对应的SERVLET实例,将所述SERVLET实例发送给运行模块83;0115所述运行模块83,用于根据所述查找获取模块82发送的SERVLET实例,调用所述SERVLET实例的函数方法处理。

41、所述页面请求,返回处理结果;还用于所述查找获取模块82说明书CN104102502A118/8页12没有找到所述URL对应的SERVLET实例时,生成并返回错误提示信息。0116进一步的,所述类运行模块80还包括调用模块84、第三用户类加载模块85和第二应用类加载模块86;其中,0117所述调用模块84,用于SERVLET实例的处理函数调用下层的FACADE类文件时,在确定存在所述FACADE类文件的类定义且所述FACADE类文件没有被加载并实例化之后,判断所述FACADE类文件的文件名是否在类管理列表中,在判断结果为是时,触发第三用户类加载模块85;在判断结果为否时,触发第二应用类加载模块8。

42、6;0118所述第三用户类加载模块85,用于通过CUSTOMCLASSLOADER加载文件名在类管理列表中的FACADE类文件并实例化,返回FACADE实例;0119所述第二应用类加载模块86,用于通过APPCLASSLOADER加载文件名不在类管理列表中的FACADE类文件并实例化,返回FACADE实例。0120进一步的,所述调用模块84,还用于当SERVLET实例的处理函数调用下层的除FACADE类文件以外的其他类文件时,判断所述其他类文件的文件名是否在类管理列表中,在判断结果为是时,触发第三用户类加载模块85;在判断结果为否时,触发第二应用类加载模块86;0121所述第三用户类加载模块8。

43、5,还用于通过CUSTOMCLASSLOADER加载文件名在类管理列表中的所述其他类文件并实例化,返回所述其他类文件的实例;0122所述第二应用类加载模块86,还用于通过APPCLASSLOADER加载文件名不在类管理列表中的所述其他类文件并实例化,返回所述其他类文件的实例。0123上述方案中,所述第三用户类加载模块85与所述第二用户类加载模块73、所述第一用户类加载模块64可采用同一个用户类加载模块;所述第二应用类加载模块86与所述应用类加载模块74可采用同一个用户类加载模块。0124本发明还提供一种服务器,所述服务器包括上述实现热部署的处理装置。0125本发明实施例所述实现热部署的处理方法。

44、如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备可以是个人计算机、服务器、或者网络设备等执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括U盘、移动硬盘、只读存储器ROM,READONLYMEMORY、随机存取存储器RAM,RANDOMACCESSMEMORY、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。012。

45、6相应的,本发明实施例还提供一种计算机存储介质,其中存储有计算机程序,该计算机程序用于执行本发明实施例的实现热部署的处理方法。0127以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。说明书CN104102502A121/5页13图1图2说明书附图CN104102502A132/5页14图3说明书附图CN104102502A143/5页15图4说明书附图CN104102502A154/5页16图5图6说明书附图CN104102502A165/5页17图7图8说明书附图CN104102502A17。

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

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1