System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本说明书实施例涉及热部署领域,特别地,涉及一种基于groovy逻辑模块的热部署实施方法和装置。
技术介绍
1、热部署是指在应用正在运行的时候升级软件,却不需要重新启动应用服务,常用于风险检查、结算规则、活动规则等。groovy是用于java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。
2、现有技术中主要存在的热部署方法是针对整个应用服务的热部署,针对整个服务的热部署会使得整个服务发生重载,会导致不需要进行更新的业务发生不可预知的异常,影响业务系统整体的稳定性。
3、因此现在亟需一种基于groovy逻辑模块的热部署实施方法,能够实现对某个具体逻辑的热部署,而不影响业务系统整体的稳定性。
技术实现思路
1、本说明书实施例的目的在于提供一种基于groovy逻辑模块的热部署实施方法和装置,以实现对某个具体逻辑的热部署,而不影响业务系统整体的稳定性。
2、为达到上述目的,一方面,本说明书实施例提供了一种基于groovy逻辑模块的热部署实施方法,所述groovy逻辑模块中的逻辑属于业务系统逻辑的部分逻辑,所述方法包括:
3、将groovy逻辑模块中的逻辑加载至springmodule中;
4、判断所述groovy逻辑模块是否仅提供groovy脚本;
5、若是,则将所述groovy脚本初始化成可运行对象;
6、若否,则:
7、将所述gr
8、将所述独立的classloader初始化,并分配相应独立的applicationcontext;
9、扫描所述groovy逻辑模块中的可运行类,通过所述applicationcontext对所述可运行类实例化成可运行对象;
10、缓存所述可运行对象,完成所述groovy逻辑模块的初始化;
11、根据执行命令执行所述groovy逻辑模块中的逻辑;
12、根据销毁命令销毁所述groovy逻辑模块。
13、优选的,所述根据执行命令执行所述groovy逻辑模块中的逻辑进一步包括:
14、获取所述groovy逻辑模块对应的可运行对象;
15、判断所述groovy逻辑模块是否仅提供groovy脚本;
16、若是,则通过所述可运行对象执行所述groovy逻辑模块中的逻辑;
17、若否,则:
18、将所述groovy逻辑模块对应的classloader设置为当前线程的上下文classloader;
19、通过所述可运行对象执行所述groovy逻辑模块中的逻辑;
20、将当前线程的上下文classloader恢复为初始上下文classloader。
21、优选的,所述根据销毁命令销毁所述groovy逻辑模块进一步包括:
22、将所述springmodule由缓存中移除;
23、判断所述groovy逻辑模块是否仅提供groovy脚本;
24、若是,则销毁所述可运行对象;
25、若否,则:
26、销毁所述可运行对象;
27、销毁所述可运行对象对应的classloader和applicationcontext。
28、优选的,还包括:
29、设置与所述groovy逻辑模块对应的动态逻辑接口;
30、所述业务系统中的其他模块通过所述动态逻辑接口调用所述groovy逻辑模块的功能。
31、优选的,所述groovy逻辑模块中的逻辑提供方式包括:上传特定格式的压缩包、提供groovy脚本以及同时提供groovy脚本和maven依赖。
32、优选的,还包括:
33、所述groovy逻辑模块接收用于测试的输入参数;
34、所述groovy逻辑模块根据所述输入参数,执行所述groovy逻辑模块中的逻辑进行测试,根据测试流程进行日志回写。
35、另一方面,本说明书实施例提供了一种基于groovy逻辑模块的热部署实施装置,所述groovy逻辑模块中的逻辑属于业务系统逻辑的部分逻辑,所述装置包括:
36、加载模块,用于将groovy逻辑模块中的逻辑加载至springmodule中;
37、判断模块,用于判断所述groovy逻辑模块是否仅提供groovy脚本;
38、若是,则将所述groovy脚本初始化成可运行对象;
39、若否,则:
40、将所述groovy逻辑模块初始化,并分配相应独立的classloader;
41、将所述独立的classloader初始化,并分配相应独立的applicationcontext;
42、扫描所述groovy逻辑模块中的可运行类,通过所述applicationcontext对所述可运行类实例化成可运行对象;
43、缓存模块,用于缓存所述可运行对象,完成所述groovy逻辑模块的初始化;
44、执行模块,用于根据执行命令执行所述groovy逻辑模块中的逻辑;
45、销毁模块,用于根据销毁命令销毁所述groovy逻辑模块。
46、又一方面,本说明书实施例还提供了一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,所述计算机程序被所述处理器运行时,执行上述任意一项所述方法的指令。
47、又一方面,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机设备的处理器运行时,执行上述任意一项所述方法的指令。
48、由以上本说明书实施例提供的技术方案可见,本说明书实施例运用classloader、applicationcontext这两项技术,以实现在执行groovy脚本时,使用groovy逻辑模块自身的三方依赖、使用公用spring bean(spring容器管理的对象,公用spring bean是指该对象为公用java类的实例),但是又能避免组件之间的spring bean(spring容器管理的对象,组件之间的spring bean是指该对象为组件之间java类的实例)、三方依赖的冲突,对相应的groovy逻辑模块进行热部署。
49、为让本说明书的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
本文档来自技高网...【技术保护点】
1.一种基于Groovy逻辑模块的热部署实施方法,其特征在于,所述Groovy逻辑模块中的逻辑属于业务系统逻辑的部分逻辑,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据执行命令执行所述Groovy逻辑模块中的逻辑进一步包括:
3.根据权利要求1所述的方法,其特征在于,所述根据销毁命令销毁所述Groovy逻辑模块进一步包括:
4.根据权利要求1所述的方法,其特征在于,还包括:
5.根据权利要求1所述的方法,其特征在于,所述Groovy逻辑模块中的逻辑提供方式包括:上传特定格式的压缩包、提供Groovy脚本以及同时提供Groovy脚本和Maven依赖。
6.根据权利要求1所述的方法,其特征在于,还包括:
7.一种基于Groovy逻辑模块的热部署实施装置,其特征在于,所述Groovy逻辑模块中的逻辑属于业务系统逻辑的部分逻辑,所述装置包括:
8.一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,其特征在于,所述计算机程序被所述处理器运行时,执行根据权利要求1-6
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被计算机设备的处理器运行时,执行根据权利要求1-6任意一项所述方法的指令。
10.一种计算机程序产品,其特征在于,所述计算机程序产品被计算机设备的处理器运行时,执行根据权利要求1-6任意一项所述方法的指令。
...【技术特征摘要】
1.一种基于groovy逻辑模块的热部署实施方法,其特征在于,所述groovy逻辑模块中的逻辑属于业务系统逻辑的部分逻辑,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据执行命令执行所述groovy逻辑模块中的逻辑进一步包括:
3.根据权利要求1所述的方法,其特征在于,所述根据销毁命令销毁所述groovy逻辑模块进一步包括:
4.根据权利要求1所述的方法,其特征在于,还包括:
5.根据权利要求1所述的方法,其特征在于,所述groovy逻辑模块中的逻辑提供方式包括:上传特定格式的压缩包、提供groovy脚本以及同时提供groovy脚本和maven依赖。
6.根据权利要求1所述的方法...
【专利技术属性】
技术研发人员:金明宇,辛明昊,关军浦,肖凯,罗超华,
申请(专利权)人:北京量子之歌科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。