基于动态字节码的服务调用方法及装置制造方法及图纸

技术编号:26342153 阅读:12 留言:0更新日期:2020-11-13 20:30
本公开的实施例提供了基于动态字节码的服务调用方法、装置、设备和计算机可读存储介质。所述方法包括接收服务调用指令;根据所述服务调用指令调用所述服务;基于动态字节码依次调用所述服务的各个方法;将所述服务的执行结果反馈给所述服务调用指令的发送方。以此方式,若所述服务的某一动作执行失败,则操作人员可以直观的发现问题,并进行手动调用所述执行失败的动作,无需通过直接操作数据库方式对该动作对应的数据进行操作,操作风险低,效率高。

Service invocation method and device based on dynamic bytecode

【技术实现步骤摘要】
基于动态字节码的服务调用方法及装置
本公开的实施例一般涉及计算机
,并且更具体地,涉及基于动态字节码的服务调用方法、装置、设备和计算机可读存储介质。
技术介绍
现有操作中,可以通过API接口将方法暴露出来。但是,很多场景下,需要操作人员手动处理非暴露的方法,例如在订单取消服务的处理流程中,后台订单服务器接收用户发出的订单取消请求,会依次执行仓库订单取消、配送订单取消、退款通知等动作;这些动作需要依次执行,只有前面的动作执行成功,才能执行后续动作。若某一动作执行失败,则操作人员只能通过直接操作数据库方式对该订单进行取消操作,所述取消操作缺乏校验机制,因此操作风险高,效率低。
技术实现思路
根据本公开的实施例,提供了一种基于动态字节码的服务调用方案。在本公开的第一方面,提供了一种基于动态字节码的服务调用方法。该方法包括:接收服务调用指令;根据所述服务调用指令调用所述服务;基于动态字节码依次调用所述服务的各个方法;将所述服务的执行结果反馈给所述服务调用指令的发送方。如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述服务的各个方法是由Java虚拟机加载并被顺序调用的。如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,基于动态字节码依次调用所述服务的各个方法包括:基于动态字节码将所述服务的各个方法生产为可以手动调用的服务;依次调用所述通过动态字节码生产的服务。如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,基于动态字节码将所述服务的各个方法生产为可以手动调用的服务包括:对Java虚拟机加载的所述服务的每一个方法,检查所述方法起始位置的前一行是否有注解;若不存在标记,则检查下一个方法;若存在标记,则通过动态字节码将所述方法生产为可以手动调用的服务。如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,依次调用所述通过动态字节码生产的服务包括:依次调用所述通过动态字节码生产的服务;获取所述通过动态字节码生产的服务的被调用状态;若所述被调用状态为成功,继续调用下一方法;若所述被调用状态为失败,反馈调用失败提示信息,提示操作人员进行手动调用;接收操作人员的手动调用指令,手动调用所述被调用失败的服务。如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述调用失败提示信息包括:所述通过动态字节码生产的服务的名称及被调用状态。如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,依次调用所述通过动态字节码生产的服务还包括:判断是否还存在未被调用的所述通过动态字节码生产的服务;若是,则继续调用;若否,则结束。在本公开的第二方面,提供了一种基于动态字节码的服务调用装置。该装置包括:接收模块,用于接收服务调用指令;服务调用模块,用于根据所述服务调用指令调用所述服务;方法调用模块,用于基于动态字节码依次调用所述服务的各个方法;反馈模块,用于将所述服务的执行结果反馈给所述服务调用指令的发送方。在本公开的第三方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。在本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如根据本公开的第一方面的方法。应当理解,
技术实现思路
部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。附图说明结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:图1示出了能够在其中实现本公开的实施例的示例性运行环境的示意图;图2示出了根据本公开的实施例的基于动态字节码的服务调用方法的流程图;图3示出了根据本公开的实施例的基于动态字节码依次调用服务的各个方法的流程图;图4示出了根据本公开的实施例的依次调用订单取消服务的各个方法,以取消所述订单的方法的流程图;图5示出了根据本公开的实施例的基于动态字节码的服务调用装置的方框图;图6示出了能够实施本公开的实施例的示例性电子设备的方框图。具体实施方式为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。Java代码都是要被编译成字节码后才能放到JVM里执行的,而字节码一旦被加载到虚拟机中,就可以被解释执行。字节码文件(.class)就是普通的二进制文件,它是通过Java编译器生成的。而只要是文件就可以被改变,如果用特定的规则解析了原有的字节码文件,对它进行修改或者干脆重新定义,就可以改变代码行为了。图1示出了能够在其中实现本公开的实施例的示例性运行环境100的示意图。在运行环境100中包括客户端102、订单服务器104。图2示出了根据本公开实施例的基于动态字节码的服务调用方法200的流程图。方法200可以由图1中的订单服务器104执行。如图2所示,包括以下步骤:在框210,订单服务器104接收服务调用指令;在一些实施例中,所述服务调用指令用于调用服务,所述服务包括多个依次调用的方法。在框220,订单服务器104根据所述服务调用指令调用所述服务;在框230,订单服务器104基于动态字节码依次调用所述服务的各个方法;在一些实施例中,对Java虚拟机加载的所述服务的每一个方法,检查所述方法起始位置的前一行是否有注解,所述注解是事先标注在需要进行手动调用的方法之前的;若不存在标记,则检查下一个方法;若存在标记,则通过动态字节码将所述方法生产为可以手动调用的服务;依次调用所述通过动态字节码生产的服务;获取所述通过动态字节码生产的服务的被调用状态;若所述被调用状态为成功,则继续调用下一方法;若所述被调用状态为失败,则通过API接口反馈调用失败提示信息,提示操作人员进行手动调用。接收操作人员的手动调用指令,手动调用所述被调用失败的服务。重复执行上述步骤,直至所述服务的各个方法生产的可以手动调用的服务被调用结束。其中,判断是否遍历所述服务的各个方法生产的可以手动调用的服务,如果否则重复上述步骤,如果是,则结束本流程。在框240,订单服务器104将所述服务的执行结果反馈给所述服务调用指令的发送方。根据本公开的实施例,实现了以下技术效果:...

【技术保护点】
1.一种基于动态字节码的服务调用方法,其特征在于,包括:/n接收服务调用指令;/n根据所述服务调用指令调用所述服务;/n基于动态字节码依次调用所述服务的各个方法;/n将所述服务的执行结果反馈给所述服务调用指令的发送方。/n

【技术特征摘要】
1.一种基于动态字节码的服务调用方法,其特征在于,包括:
接收服务调用指令;
根据所述服务调用指令调用所述服务;
基于动态字节码依次调用所述服务的各个方法;
将所述服务的执行结果反馈给所述服务调用指令的发送方。


2.根据权利要求1所述的方法,其特征在于,所述服务的各个方法是由Java虚拟机加载并被顺序调用的。


3.根据权利要求1所述的方法,其特征在于,基于动态字节码依次调用所述服务的各个方法包括:
基于动态字节码将所述服务的各个方法生产为可以手动调用的服务;依次调用所述通过动态字节码生产的服务。


4.根据权利要求3所述的方法,其特征在于,基于动态字节码将所述服务的各个方法生产为可以手动调用的服务包括:
对Java虚拟机加载的所述服务的每一个方法,检查所述方法起始位置的前一行是否有注解;若不存在标记,则检查下一个方法;若存在标记,则通过动态字节码将所述方法生产为可以手动调用的服务。


5.根据权利要求4所述的方法,其特征在于,依次调用所述通过动态字节码生产的服务包括:
依次调用所述通过动态字节码生产的服务;获取所述通过动态字节码生产的服务的被调用状态;若所述被调用状态为成功,继续调用...

【专利技术属性】
技术研发人员:周立伟
申请(专利权)人:北京每日优鲜电子商务有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1