[发明专利]基于SpringAop的热插拔异常捕获方法及装置在审
申请号: | 202010520436.9 | 申请日: | 2020-06-10 |
公开(公告)号: | CN111427716A | 公开(公告)日: | 2020-07-17 |
发明(设计)人: | 顾凌云;郭志攀;王伟;孙川 | 申请(专利权)人: | 上海冰鉴信息科技有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F11/36 |
代理公司: | 成都顶峰专利事务所(普通合伙) 51224 | 代理人: | 李通 |
地址: | 200000 上海市浦东新区*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 springaop 热插拔 异常 捕获 方法 装置 | ||
本发明提供了一种基于SpringAop的热插拔异常捕获方法及装置,通过基于SpringAop定义的切面配置类使用execution表达式匹配第一程序项目中的方法,在检测到第一程序项目中的目标方法存在异常时,在第二程序项目中创建目标方法发生异常后的处理类并进行压缩得到压缩文件。将压缩文件上传至服务器,并将压缩文件的类名、压缩文件在服务器中的保存位置信息以及目标方法的execution表达式存入预设数据库。通过虚拟机加载保存位置信息,并将压缩文件的类名进行实例化得到实例化对象。基于目标方法的execution表达式将实例化对象与目标方法关联,以对目标方法进行拦截。如此,通过远程获取压缩文件并动态注入到第一程序项目中,能够实现动态异常捕获并处理以提高程序处理异常的能力。
技术领域
本发明涉及程序异常检测技术领域,具体而言,涉及一种基于SpringAop的热插拔异常捕获方法及装置。
背景技术
计算机程序在运行过程中可能会出现异常。在程序出现不可预知的异常时,会导致程序中断。常见的异常捕获方法是通过对代码进行硬编码,在有可能出现异常的地方进行try/catch异常捕获。然而这种采用硬编码的方式进行异常捕获时,会导致程序中断,在通过修复代码对程序的异常情况进行修复后,还需要进行版本发布,这样会耗费较多的时间成本。
发明内容
为了改善上述问题,本发明提供了一种基于SpringAop的热插拔异常捕获方法及装置。
本发明实施例的第一方面,提供了一种基于SpringAop的热插拔异常捕获方法,所述方法包括:
定义基于SpringAop的切面配置类,通过所述切面配置类使用execution表达式匹配第一程序项目中的方法;
检测所述第一程序项目中的方法是否存在异常;
在检测到所述第一程序项目中的目标方法存在异常时,在第二程序项目中创建所述目标方法发生异常后的处理类;将所述处理类进行压缩,得到压缩文件;
将所述压缩文件上传至服务器,并将所述压缩文件的类名、所述压缩文件在服务器中的保存位置信息以及所述目标方法的execution表达式存入预设数据库;
通过虚拟机将所述预设数据库中的所述保存位置信息进行加载,并将所述预设数据库中的所述压缩文件的类名进行实例化得到实例化对象;
基于所述目标方法的execution表达式将所述实例化对象与所述目标方法关联,以对所述目标方法进行拦截。
可选地,通过虚拟机将所述预设数据库中的所述保存位置信息进行加载,包括:
通过所述虚拟机从所述预设数据库中获取所述保存位置信息;
通过所述虚拟机进行反射,得到URLClassLoader的addURL方法,采用所述addURL方法将所述保存位置信息添加到ClassLoader中。
可选地,通过所述虚拟机进行反射,得到URLClassLoader的addURL方法,包括:
根据获取到的所述保存位置信息并实例化File对象;
判断预设的类加载器中是否存在所述File对象的类;
若不存在,则通过URLClassLoader.class.getDeclaredMethod(addURL, new Class[] { URL.class })得到所述addURL方法。
可选地,将所述预设数据库中的所述压缩文件的类名进行实例化得到实例化对象,包括:
获取所述预设数据库中的所述压缩文件的类名;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海冰鉴信息科技有限公司,未经上海冰鉴信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010520436.9/2.html,转载请声明来源钻瓜专利网。