发明专利填写申请表
专利提案名称:基于 javaagent 的定时任务HTTP接口调用的技术
本人已将该技术实现开源: 基于 javaagent 的开源实现
现有业内或产品是否有类似的,现有技术是否有缺陷或不足或问题
(备注:请客观指出现有业内或产品缺陷或不足的问题,如果相关的现有技术文档,也请提供,本部分内容必须不少于300字)
1、目前常见的 java 项目大多数使用 Spring、Quartz、Xxl 等框架实现定时任务的,无论是调度器与执行器分开还是一体的,大都存在测试困难的问题和抬高对测试人员要求,比如必须掌握 cron 表达式的编写。2、对于测试人员对定时任务测试难以提高效率,常规的思路是去修改定时任务时间,然后等到执行时间后查看执行情况,定时任务的执行完全交予 Spring、Quartz、Xxl 框架中的调度程序进行调度执行。
3、有的项目实现方式需要修改配置文件且不能立即生效,还需要重启服务,极其浪费时间。
4、一般企业项目都会存在测试用例的编写,对于定时任务的测试用例来说,通过修改定时任务时间的方式来说是相当的费时费力。
5、为了解决测试困难的问题,有的项目会针对每个定时任务开发一个对外暴露的 http 接口来触发任务,如果系统定时任务较多且不同开发人员编写,那么系统将存在多个 http 接口,管理不方便,且增加开发人员工作量。
6、定时任务的执行状态难以控制,修改定时任务时间,需要等到下次才能执行,单个任务测试周期长。
7、测试结果检查效率低,需要等待设置的时间到点执行后才能进行结果检查,整个测试用例周期会被定时任务时间抬高时长,且测试用例编写复杂。
8、另外,系统中存在的定时任务有多少?定时任务的启停情况是怎样的?这些要么靠人工记录,要么查看定时任务的执行日志,增加运维成本。
针对现有技术的不足进行改进点或创新点主要在哪里?
(备注:需对方案的改进点或创新点进行详细阐述,并结合图示说明方案,图示包括但不限于示意图、框架图、流程图、交互图等,本部分内容必须不少于600字)
针对项目现有技术做了如下改进:
1、通过 javaagent 字节码增强技术的方式,对自定义的对外可访问的 controller 进行代码增强,无需额外的开发成本,代码无侵入,支持市面上流行的基于spring框架项目(Xxl、Quartz、Spring注解)。
2、增强的 controller 会增加两个可访问的 http 接口,其中一个可以根据请求传递的 job 名称来立即执行定时任务,且会等待任务执行完成,返回执行结果,无需去修改定时任务的时间来进行测试;另外一个 http 接口是可以针对系统现有的定时任务进行 CRUD,如果想停止执行或取消某个定时任务,可以访问这个接口来处理,方便应急停止常景。
3、通过提供统一的 http 接口,可以掌握系统中存在的所有定时任务及定时任务的状态信息,而无需要开发人员进行挨个的统计或管理定时任务,节约开发成本。
4、另外测试用例编写可直接调用对外暴露的 http 接口,提高测试效率,并且能够立即针对执行结果进行判断,节约了大量测试时间,额外的可以通过 CRUD 接口对定时任务进行灵活操作而无需重启服务,方便快捷。
5、另外提供了多种定时任务的支持,包括 Xxl,Quartz、Spring 注解方式,如果有其他方式,可灵活进行扩展。
6、使用了三种字节码操作技术,javassist、asm、byte buddy、可针对性的选择增强技术的方式。
7、提供了多种可配置参数,包括 http 请求路径(以防与controller内部的路径冲突),spring 上下文容器名称(以防与controller内部的spring容器命名冲突)等。
原理图:
主要的创新点有:
1、通过接口访问服务进行定时任务调度,随时执行随时查看执行情况,无需修改定时任务时间并等待定时任务到时间查看执行情况。
2、通过 javaagent 技术实现,类加载前字节码增强,代码无侵入,灵活性高,不影响项目本身业务逻辑。
3、可用于测试环境以及生产环境,且可根据 http 接口开发一套定时任务的管理功能页面,方便定时任务管理与维护。
4、可无需重启服务的情况下对定时任务进行CRUD,极大的包容性,可根据公司及项目情况灵活运用。
改进后的好处
(备注:本技术方案改进后有和优点或改进后的好处。本部分内容必须不少于200字)
1、执行状态可控,通过直接调用http接口的方式,调用即执行,不用再延时等待,job的执行状态可以快速获得。
2、对结果检查的效率提高了,可以快速发现执行成功与否,而且不需要让开发修改代码,项目代码与增强实现分离,对项目安全性,稳定性都有所提高。
3、可以快速编写自动化测试案例,原来想要实现这样的自动化需要提前修改好执行时间,需要避开系统测试,不能影响正常系统测试,有时还需要人工重启后再进行执行自动化测试案例。现有改进后,可以随时调用接口进行执行,无需修改执行时间,更不用重启服务。大大提高了自动化测试的效率。
备注
行自动化测试案例。现有改进后,可以随时调用接口进行执行,无需修改执行时间,更不用重启服务。大大提高了自动化测试的效率。
备注
如有已知现有技术的文章、专利文献、论文或者网站链接等,请提供可插入附加