[发明专利]一种在web应用中实现在线升级代码的方法在审
申请号: | 201510827619.4 | 申请日: | 2015-11-25 |
公开(公告)号: | CN105468464A | 公开(公告)日: | 2016-04-06 |
发明(设计)人: | 钟健波;杨松;季统凯 | 申请(专利权)人: | 国云科技股份有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;H04L29/08;G06F9/445 |
代理公司: | 广东莞信律师事务所 44332 | 代理人: | 余伦 |
地址: | 523808 广东省东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 web 应用 实现 在线 升级 代码 方法 | ||
技术领域
本发明涉及应用升级更新,特别是一种在web应用中实现在线升级代码的 方法。
背景技术
Web应用通过发布接口来提供服务,在应用运行过程中,当发现服务存在 bug,需要修复,或者提供了更多的服务,就需要更新应用的代码,以便提供更 好的服务质量。但是传统的应用更新存在以下问题:
一是应用更新时,需要停止服务,放入更新代码后再重新启动,如果应用 本身是比较大型的服务,重启时间比较长,那么会导致用户在应用重启的这段 时间里无法使用服务。
二是如果通过负载均衡,部署两套服务,升级其中一套,另外一套继续服 务,对于小型的服务来说又是很耗费资源的;
为了使服务可以持续提供,不影响用户的使用,同时使用较少的资源,需 要一种通实现在线升级代码的方法。
发明内容
本发明解决的技术问题在于提供一种在web应用中实现在线升级代码的方 法,解决了使用较少资源完成应用的在线升级问题。
本发明解决上述技术问题的技术方案是:
包括如下步骤:
所述的方法包括如下步骤:
步骤1:创建统一的提供服务接口;
步骤2:创建web应用启动模块,加载所有jar包到内存;
步骤3:统一接口获取内存并实例化,处理后返回;
步骤4:放入更新jar包,启动更新模块;
步骤5:判断应用是否已在更新状态,是,执行步骤8;不在更新状态,执 行步骤6;
步骤6:更新模块获取jar包内容,放到内存中,完成更新;
步骤7:调用统一接口继续提供服务;
步骤8:结束。
所述的统一的服务接口带有computeActionType参数,标识调用功能,并把 所有入参以map形式保存;
所述的统一接口根据入参computeActionType,获取全局map中对应的实现 类,初始化实现类,并把请求入参map赋值到实现类中,执行实现类,把执行 结果返回给用户。
所述的启动模块,在web应用启动时执行,遍历应用特定路径下jar包,并 加载jar包中所有baseTask类的实现类,同时加入到全局静态Map中。
所述的判断应用是否更新中,更新模块带有全局变量,记录应用是否更新 中,用户调用更新接口后,更新模块启动,标识应用升级中,更新模块执行完 毕后标识应用不在升级状态,可以继续下次更新。
扫描特定路径下所有jar包,并获取所有baseTask类的实现类,加入到临时 map中,扫描完毕后,替换原有内存中的全局静态map。
本发明通过把应用服务的实现类加载到内存中,使用时再实例化。应用更 新时,扫描所有jar包,重新加载实现类的内存中进行替换,实现应用的在线升 级。在生产环境中,只需要提供足够一套足够应用运行的环境即可,应用升级 时,还能继续提供服务,能减少运营成本,同时也能提供稳定的服务。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明方法流程图。
具体实施方式
如图1所示,本发明主要包括以下步骤:
创建统一的服务入口,处理用户的请求:
获取服务实现类代码如下
扫描jar包代码
把实现类加载到内存代码
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国云科技股份有限公司,未经国云科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510827619.4/2.html,转载请声明来源钻瓜专利网。