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

文档序号:9631416阅读:368来源:国知局
一种Java应用的热部署方法及系统的制作方法
【技术领域】
[0001]本发明涉及应用热部署技术,尤其涉及一种Java应用的热部署方法及系统。
【背景技术】
[0002]所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。
[0003]对于Java EE (java enterprise edit1n, java企业平台)程序来说,热部署就是在系统运行时更新java类文件、配置文件,而无需停止应用。
[0004]在进行Java web程序开发过程中,经常遇到这种问题,修改一个Java文件/配置文件,需要重启web服务器(如tomcat, weblogic等),部署项目。而启停服务器浪费了大量的时间。在小项目中,也许我们感觉不到,但对于公司的大型项目,如数据中心等系统的开发而言,启/停需要等待几分钟时间。同时,调试过程中,如果修改多次,需要反复的启停服务器,极大降低开发效率。而在生产环境中,重启除了会浪费大量的时间,也会带来额外的风险,降低用户体验。
[0005]从上可以看出,发明一种热部署方法/工具,对于提高我们的开发效率、运维效率、提高用户体验有着极大的帮助。同时,当生产系统遇到故障时,热部署的方式可以帮助开发人员在无需停止应用的情况下尽快的排查故障,修复漏洞,降低系统的检修级别。
[0006]目前,一些web应用提供了自动检测装卸应用的功能,但大都相当于重新启动了一遍应用,存储在内存中的数据也会丢失,并不能灵活地满足需要。而0SGI框架,虽然也提供了模块的热部署,但为了用热部署而将应用限制在0SGI的框架内,更改了整个应用的架构、规范,耦合度太高,显得得不偿失。目前主流的一些通过自定义类加载器实现的热部署方法/系统,虽然能实现热部署,但是对于Java EE开发的一些主流框架,如spring,strtus等并不支持,因此,发明一种既能支持主流框架,同时又能与应用的其他模块解耦的热部署方法/系统,显得尤为重要。

【发明内容】

[0007]为此,需要提供一种发明一种既能支持主流框架,同时又能与应用的其他模块解耦的热部署方法及系统。
[0008]为实现上述目的,发明人提供了一种Java应用的热部署方法,
[0009]包括如下步骤,
[0010]spring容器扫描应用程序,将应用程序对应的文件注册到所述spring容器中;
[0011]热部署模块扫描应用程序,记录应用内类文件、配置文件的文件名和所在路径;
[0012]将需要进行热部署的文件替换应用内存储的文件。通过将应用程序对应的文件注册到spring框架下运行,能够在不启停系统的情况下进行热部署,达到了进行热部署更新的效果。
[0013]进一步地,还包括步骤,
[0014]热部署模块扫描应用内的文件,记录当前应用版本号;
[0015]根据应用当前版本号以及用于替换的版本号,将用于替换的版本号对应的替换文件覆盖到当前版本号文件对应的路径。通过记录版本号,能够更加方便的替换文件,同时能够更加方便地进行版本的回溯。
[0016]进一步地,还包括步骤,
[0017]外部应用从spring容器中请求获取应用文件。外部应用从spring容器中获取应用文件,Spring容器的引入,使得热部署模块与外部应用完全解耦。能够在系统更新的时候仍能够正常运行,提高了系统的工作效率。
[0018]优选地,若需要进行热部署的文件为spring配置文件,则进行步骤,
[0019]解析所述spring配置文件,得到包含的类文件及spring配置信息;
[0020]根据包含的类文件及spring配置信息执行spring内置刷新操作,对spring配置文件进行热部署。利用上述方法对spring配置文件进行更新,提高了本发明方法的热部署效率。
[0021]—种Java应用的热部署系统,包括注册模块、热部署模块,
[0022]所述注册模块用于通过spring容器扫描应用程序,将应用程序对应的文件注册到所述spring容器中;
[0023]所述热部署模块用于扫描应用程序,记录应用内类文件、配置文件的文件名和所在路径;
[0024]所述热部署模块还用于将需要进行热部署的文件替换应用内存储的文件。系统通过将应用程序对应的文件注册到spring框架下运行,能够在不启停系统的情况下进行热部署,达到了进行热部署更新的效果。
[0025]进一步地,
[0026]所述热部署模块还用于扫描应用内的文件,记录当前应用版本号;
[0027]根据应用当前版本号以及用于替换的版本号,将用于替换的版本号对用的替换文件覆盖到当前版本号文件对应的路径。系统通过记录版本号,能够更加方便的替换文件,同时能够更加方便地进行版本的回溯。
[0028]进一步地,还包括外部获取模块,
[0029]所述外部获取模块用于使外部应用从spring容器中请求获取应用文件。能够在系统更新的时候仍能够正常运行,提高了系统的工作效率。
[0030]优选地,还包括spring配置模块,所述spring配置模块用于在需要进行热部署的文件为spring配置文件时,解析所述spring配置文件,得到包含的类文件及spring配置信息;
[0031]所述spring配置模块还用于根据包含的类文件及spring配置信息执行spring内置刷新操作,对spring配置文件进行热部署。利用上述方法对spring配置文件进行更新,提高了本发明方法的热部署效率。
[0032]区别于现有技术,上述技术方案通过将应用程序对应的文件注册到spring容器框架中执行,使得后台在进行文件更新时不影响外部应用对应用文件的获取,达到了不启停系统对应用文件进行热部署的技术效果,本发明支持当前java web开发的主流框架,达成了热部署与应用模块的完全解耦;本发明首次提出了可逆操作的热部署。
【附图说明】
[0033]图1为本发明【具体实施方式】所述的方法流程示意图;
[0034]图2为本发明【具体实施方式】所述的系统模块示意图;
[0035]图3为本发明【具体实施方式】所述的文件替换功能图;
[0036]图4为本发明【具体实施方式】所述的系统组件关系图;
[0037]图5为本发明【具体实施方式】所述的应用系统生命周期图。
[0038]附图标记说明:
[0039]200、注册模块;
[0040]202、热部署模块;
[0041]204、外部获取模块;
[0042]206、spring 配置模块。
【具体实施方式】
[0043]为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
[0044]请参阅图1,为本发明一种Java应用的热部署方法流程示意图,
[0045]包括如下步骤,
[0046]S100:spring容器扫描应用程序,将应用程序对应的文件注册到所述spring容器中;
[0047]S102:热部署模块扫描应用程序,记录应用内类文件、配置文件的文件名和所在路径;
[0048]S106:将需要进行热部署的文件替换应用内存储的文件。
[0049]本发明适用于Java框架下进行的文件更新,Spring是一个java的开源开发框架,所述Spring容器是由spring控制的,用于管理应用所有的资源(类、配置文件等)的容器。传统程序中,类(即:对象)是由开发者完成的,而在spring容器中,对象的生成交由spring框架来完成。其中应用、应用程序指代系统中运行的程序,每个程序都在特定位置存储有其对应的文件,即应用文件或应用程序对应的文件,主要包括类文件、配置文件等。本方法中先将应用文件通过扫描注册到spring容器中,记录下应用内类文件和、配置文件的文件名;热部署模块获取需要进行更新的文件
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1