[发明专利]应用程序的热修复方法、系统、设备及可读存储介质在审
申请号: | 202210934739.4 | 申请日: | 2022-08-04 |
公开(公告)号: | CN115291923A | 公开(公告)日: | 2022-11-04 |
发明(设计)人: | 杨博研 | 申请(专利权)人: | 平安银行股份有限公司 |
主分类号: | G06F8/656 | 分类号: | G06F8/656;G06F8/658 |
代理公司: | 深圳市威世博知识产权代理事务所(普通合伙) 44280 | 代理人: | 李申 |
地址: | 518000 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用程序 修复 方法 系统 设备 可读 存储 介质 | ||
本申请公开了一种应用程序的热修复方法、系统、设备及可读存储介质。所述应用程序的热修复方法包括:终端获取到待修复应用程序的补丁包,所述补丁包中包括有所述待修复应用程序对应的目标应用程序子类的类文件;利用类加载器加载所述目标应用程序子类的类文件;将所述目标应用程序子类注册为所述待修复应用程序对应的类标识符所对应的对象。上述方案,避免了待修复类未实现某一声明接口的场景,减少因为后续对修复逻辑或方法的调用而引发的各种框架中引用处理的复杂性。
技术领域
本申请涉及计算机技术领域,特别是涉及一种应用程序的热修复方法、系统、设备及可读存储介质。
背景技术
生产环境线上问题(bug)的解决一直是系统研发、运维人员头疼的一个问题,有的行业对应用很敏感,比如金融行业,游戏服务,可能一个月或者更长时间不能停止服务提供或者因为管控无法重新发布版本,但谁也无法保证线上的逻辑百分百没有问题,这就需要在不停止服务的情况下在线修复bug,以实现提供服务的连续性和稳定性。
业内现有的在线修复bug的技术方式主要有两种:一种是使用javaAgent技术(依附于java应用程序并能对其字节码做相关更改的一项技术),利用instrument工具相关api接口直接在运行时重载需要修复的类,该种方式的缺陷在于,无法新增一个原来不存在的依赖类,修复类和待修复类的实现接口数、接口类型、方法访问符、字段数、方法签名都必须完全一致;另一种是通过重新加载原有类的修复类,该种方式的不足在于,待修复类和修复类必须为某同一声明接口的实现类,否则在重新加载修复类后,其原类型无法接收新加载的修复类,因为此时JVM(Java虚拟机)认为修复前后已非同一个类,故此时进行修复方法的重新调用时,需结合反射等方式处理,在各种框架中实现复杂度升高,而待修复类未实现某一声明接口的情况在现有工程代码中较普遍。
发明内容
本申请主要解决的技术问题是提供一种应用程序的热修复方法、系统、设备及可读存储介质,能够避免待修复类未实现某一声明接口的场景,减少因为后续对修复逻辑或方法的调用而引发的各种框架中引用处理的复杂性。
为了解决上述问题,本申请第一方面提供了一种应用程序的热修复方法,所述应用程序的热修复方法包括:终端获取到待修复应用程序的补丁包,所述补丁包中包括有所述待修复应用程序对应的目标应用程序子类的类文件;利用类加载器加载所述目标应用程序子类的类文件;将所述目标应用程序子类注册为所述待修复应用程序对应的类标识符所对应的对象。
其中,所述利用类加载器加载所述目标应用程序子类的类文件,包括:通过所述类加载器将所述目标应用程序子类的类文件加载到JVM中。
其中,所述将所述目标应用程序子类注册为所述待修复应用程序对应的类标识符所对应的对象,包括:将所述目标应用程序子类注册至spring容器,并将所述spring容器中的所述待修复应用程序对应的类标识符所对应的对象替换为所述目标应用程序子类。
其中,所述待修复应用程序为Controller类或Mapper类;所述将所述目标应用程序子类注册至spring容器,并将所述spring容器中的所述待修复应用程序对应的类标识符所对应的对象替换为所述目标应用程序子类,包括:将所述目标应用程序子类注册至所述spring容器的子容器中;将所述子容器中的所述待修复应用程序对应的类标识符所对应的对象替换为所述目标应用程序子类。
其中,所述待修复应用程序为Controller类;所述将所述子容器中的所述待修复应用程序对应的类标识符所对应的对象替换为所述目标应用程序子类,包括:将所述目标应用程序子类注册在RequestMappingInfoHandlerMapping中,所述RequestMappingInfoHandlerMapping中记录有所述目标应用程序子类与所述待修复应用程序对应的类标识符之间的映射关系。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于平安银行股份有限公司,未经平安银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210934739.4/2.html,转载请声明来源钻瓜专利网。