[发明专利]基于Springboot的在线接口代码生成方法有效
申请号: | 202110807233.2 | 申请日: | 2021-07-16 |
公开(公告)号: | CN113419741B | 公开(公告)日: | 2022-05-27 |
发明(设计)人: | 吴志雄;陈大耀 | 申请(专利权)人: | 南威软件股份有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F9/445;G06F8/65;G06F9/54 |
代理公司: | 福州元创专利商标代理有限公司 35100 | 代理人: | 陈明鑫;蔡学俊 |
地址: | 362018 福建省*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 springboot 在线 接口 代码 生成 方法 | ||
1.一种基于Springboot的在线接口代码生成方法,其特征在于,提供基于Springboot的分布式微服务式系统,包括主控端与多个微服务客户端;其中,
主控端,用于源码生成,向多个微服务客户端分发源码并发起包括热更新的操作,同时接收各个微服务客户端的处理结果;
微服务客户端,用于接收源码、预编译检查代码是否编译成功,最终执行热更新重新加载Springboot 上下文,将从源码编译成功的Class加载至Spring的IoC中,注册成Spring的服务,以供调用;
该方法具体实现步骤如下:
步骤1、启动TCP连接服务:
主控端启动时自动启动TCP服务端口;
微服务客户端启动时自动连接主控端的TCP服务端口并向主控端注册自己的信息,为主控端及微服务客户端之间的RPC调用提供通信链路;
步骤2、主控端和微服务客户端建立TCP连接服务后,主控端进行源码生成:
在主控端根据代码模板生成通用类的源码或在主控端在线编写代码,主控端生成源码;
步骤3、源码分组:
主控端根据生成的源码的类别与微服务客户端的类别做分组,将属于同一个微服务客户端的代码打包;
步骤4、源码分发:
主控端将分组好的源码根据微服务的依赖关系,按顺序向微服务客户端发送分发源码的RPC请求,等待结果返回;
步骤5、微服务客户端收到分发源码的RPC请求时,将收到的源码数据送进自定义的ClassLoader进行编译,编译成功后得到Class对象,验证源码正确性,最终将源码缓存至内存中,并返回执行的结果给主控端;
步骤6、主控端将接收到所有的微服务客户端返回的分发源码的RPC请求结果,根据返回结果判断是否分发源码执行成功,若有一个失败,则流程中止,返回失败;若全部都成功则进行下一步操作;
步骤7、主控端按照源码模块要求的顺序,依次向微服务客户端发送热更新RPC请求,并等待结果返回;
步骤8、微服务客户端接收到热更新的RPC请求时,触发执行热更新功能模块,系统准备执行热更新;
步骤9、微服务客户端执行热更新,关闭Springboot 应用的上下文,注入进Spring的所有组件将被关闭,线程及线程池也将被关闭。
2.根据权利要求1所述的一种基于Springboot的在线接口代码生成方法,其特征在于,该方法还包括清除缓存步骤,即采用反射方式将静态类中的缓存数据全部清除,避免内存泄露。
3.根据权利要求2所述的一种基于Springboot的在线接口代码生成方法,其特征在于,所述清除缓存步骤具体实现如下:
步骤10、微服务客户端再检查当前所有的线程以确认需要被关闭线程,最终将找到的所有待关闭的线程执行销毁操作,释放资源;
步骤11、微服务客户端启动应用流程,将所有已下发的源码从缓存中写入到缓存文件中,以备冷启动时自动编译并加载所有代码;创建自定义的ClassLoader并设置为当前线程的ClassLoader,以便启动系统时接管jar包及Class文件的加载,根据规则分配其使用的ClassLoader,使得系统正常启动;
步骤12、使用当前自定义的ClassLoader从源码缓存中读取所有的源码,并编译成Class写到本地的路径下,以便ClassLoader能够正确加载该Class;
步骤13、启动Springboot 应用上下文,加载从源码编译的Class并以服务的方式注入进Spring容器中,系统的模块可以直接调用此代码;至此微服务客户端热更新完成,返回执行热更新的结果给主控端;
步骤14、主控端收到所有的微服务客户端热更新的结果,若有一个失败,则流程中止,返回失败,若全部都成功则 操作成功。
4.根据权利要求1所述的一种基于Springboot的在线接口代码生成方法,其特征在于,步骤1中,主控端可通过RPC调用微服务客户端;微服务客户端也可通过RPC调用主控端,主控端、微服务客户端双边的RPC调用共用一个TCP链路,以降低系统的部署难度。
5.根据权利要求1所述的一种基于Springboot的在线接口代码生成方法,其特征在于,步骤5中,ClassLoader是基于Groovy实现。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南威软件股份有限公司,未经南威软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110807233.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于分块并行的目标检测方法
- 下一篇:一种爬管机器人