一种Java应用的热部署方法及系统的制作方法_2

文档序号:9631416阅读:来源:国知局
,将需要进行更新的文件进行热部署。通过将应用程序对应的文件注册到spring框架下运行,能够在不启停系统的情况下进行热部署,达到了进行热部署更新的效果。在某些实施例中,需要更新的文件为类文件或配置文件,以类文件为例,还可以进行批量更新,具体如下:
[0050]1)循环对文件列表,执行单个类文件的替换操作
[0051]2)刷新spring配置文件,批量更新配置文件中包含的类文件、属性配置文件。
[0052]在另一些实施例中,以需要更新的文件为配置文件为例,配置文件分为spring配置文件以及一般配置文件,一般配置文件的处理如步骤S106所述直接覆盖替换即可,若为spring配置文件,则进行步骤S108:
[0053]解析所述spring配置文件,得到包含的类文件及spring配置信息;
[0054]根据包含的类文件及spring配置信息执行spring内置刷新操作,对spring配置文件进行热部署。
[0055]这是因为spring配置文件的更新需要依赖spring框架来完成,spring框架内置的刷新功能能够达到文件更新的效果,所述spring配置信息为spring配置文件的文件引用或包含关系。通过上述spring配置信息,进行spring内置刷新操作来进行spring配置文件的热部署,节约了时间,进一步提高了热部署方法的效率。
[0056]在某些进一步地实施例中,还包括步骤,
[0057]S104:热部署模块扫描应用内的文件,记录当前应用版本号;
[0058]根据应用当前版本号以及用于替换的版本号,将用于替换的版本号对用的替换文件覆盖到当前版本号文件对应的路径。直接将不同版本的应用文件通过版本号进行记录,便于查找和批量更新,当发现新更新的应用功能达不到预期,可以对热部署进行回溯操作,查找上一个版本号,也可以滚动回到指定的某些版本号。通过记录版本号,能够更加方便的替换文件,同时能够更加方便地进行版本的回溯。
[0059]在另一些实施例中,还包括步骤S108,
[0060]外部应用从spring容器中请求获取应用文件。外部应用从spring容器中获取应用文件的好处在于,当内部应用进行更新时,整个系统作为服务器依然能够向外部提供服务,外部应用的获取请求可以始终不断的进行,只有当热部署的文件替换成功并重新注册金spring容器中,外部应用获取的应用文件便马上变为替换成功后的应用文件。通过上述方法,外部应用从spring容器中获取应用文件,能够在系统更新的时候仍能够正常运行,提高了系统的工作效率。
[0061]如图2所示,为一种Java应用的热部署系统,包括注册模块200、热部署模块202,
[0062]所述注册模块200用于通过spring容器扫描应用程序,将应用程序对应的文件注册到所述spring容器中;
[0063]所述热部署模块202用于扫描应用程序,记录应用内类文件、配置文件的文件名和所在路径;
[0064]所述热部署模块202还用于将需要进行热部署的文件替换应用内存储的文件。通过上述系统将应用程序对应的文件注册到spring框架下运行,能够在不启停系统的情况下进行热部署,达到了进行热部署更新的效果。
[0065]进一步地,
[0066]所述热部署模块还用于扫描应用内的文件,记录当前应用版本号;
[0067]根据应用当前版本号以及用于替换的版本号,将用于替换的版本号对用的替换文件覆盖到当前版本号文件对应的路径。本系统通过记录版本号,能够更加方便的替换文件,同时能够更加方便地进行版本的回溯。
[0068]进一步地,还包括外部获取模块204,
[0069]所述外部获取模块204用于使外部应用从spring容器中请求获取应用文件。能够在系统更新的时候仍能够正常运行,提高了系统的工作效率。
[0070]优选地,还包括spring配置模块206,所述spring配置模块用于在需要进行热部署的文件为spring配置文件时,解析所述spring配置文件,得到包含的类文件及spring配置信息;
[0071]所述spring配置模块206还用于根据包含的类文件及spring配置信息执行spring内置刷新操作,对spring配置文件进行热部署。利用上述方法对spring配置文件进行更新,提高了本发明方法的热部署效率。
[0072]在其他某些实施例中,本发明提出一种基于spring,同时结合自定义类加载器的Java应用的热部署方法,较之以往的热部署方案,除了支持所有主流的MVC框架之外,还极大的降低了复杂度,同时与业务系统完全解耦,同时首次提出了支持回滚的热部署方案,首次提出了支持更新配置文件的热部署方案。本发明分为如下几个模块:注册模块、文件上传模块、热部署模块、回滚模块、核心加载器模块。各组件介绍如下:
[0073]1.注册模块
[0074]当应用启动时,模块自动扫描应用内的所有资源,记录资源名称、资源在应用中的路径,以及当前应用版本号。
[0075]2.文件上传模块
[0076]提供(存放历次提交的文件的服务器地址)中的存放路径,将本次提交的文件存入指定路径。
[0077]3.热部署模块
[0078]提供热部署功能。可指定需要替换的版本号,所述版本号来自文件上传模块中生成的版本号。同时,可指定执行热部署的时间,立即部署或者定时部署。
[0079]部署模块详细流程为:
[0080]1)根据系统当前的版本号,以及指定需要替换的版本号,从版本库中取出每个版本需要替换的文件,合并后得到需要替换的总文件列表
[0081]2)依次将文件复制到应用中的路径,执行覆盖操作。
[0082]3)依次调用核心加载器模块的提供的刷新操作。如果文件是类文件,则执行刷新类操作;如果是配置文件,则执行刷新配置文件操作。
[0083]4.回滚模块
[0084]提供自动回滚功能,此功能可用于当在生产环境执行完部署操作后,若发现应用功能达不到预期,可对热部署进行回滚操作,亦可指定回滚的版本号。该模块所执行的操作为热部署的逆向操作。
[0085]5.核心加载器模块
[0086]该模块为整个模块的底层实现模块。提供热部署文件替换功能实现。包括基于spring的单个文件热替换功能、多文件批量替换功能、配置文件替换功能。如图3所示。
[0087]5.1更新单个类文件
[0088]完成单文件替换需要进行如下两个步骤:
[0089]1)使用自定义类加载器加载应用中的指定路径的类文件。
[0090]2)执行spring的注册操作,将该类更新到spring中。
[0091 ] 5.2批量更新类文件
[0092]批量类文件的更新有两种方式:
[0093]1)循环对文件列表,执行单个类文件的替换操作
[0094]2)刷新spring配置文件,批量更新配置文件中包含的类文件、属性配置文件
[0095]5.3更新配置文件
[0096]配置文件分为spring配置文件以及一般配置文件
[0097]spring配置文件的更新则需要依赖spring的框架来完成。步骤如下:
[0098]1)使用加载器加载配置文件
[0099]2)解析配置文件,列出配置文件中包含的类文件以及其他spring配置信息
[0100]3)执行spring内置刷新操作,刷新spring配置文件中所有信息。
[0101]5.4各组件依赖关系如图4:
[0102]依赖关系说明如下:
[0103]1)文件上传模块依赖于扫描模块。扫描模块在应用启动时扫描应用所有的类文件、配置文件的文件名、绝对路径。文件上传时,根据文件名,匹配文件的绝对路径。根据绝对路径组合本次上传的唯一版本号,确定文件在库存库中的存储路径,从而将文件存入该路径中。
[0104]2)热部署模块、回
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1