CN113448689A - 运行期Dubbo协议转换装置及方法 - Google Patents

运行期Dubbo协议转换装置及方法 Download PDF

Info

Publication number
CN113448689A
CN113448689A CN202110780082.6A CN202110780082A CN113448689A CN 113448689 A CN113448689 A CN 113448689A CN 202110780082 A CN202110780082 A CN 202110780082A CN 113448689 A CN113448689 A CN 113448689A
Authority
CN
China
Prior art keywords
dubbo
dubbo service
replaced
service
configuration information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110780082.6A
Other languages
English (en)
Inventor
郑泽奇
郑小虎
张顺
张鹏鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bank of China Ltd
Original Assignee
Bank of China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN202110780082.6A priority Critical patent/CN113448689A/zh
Publication of CN113448689A publication Critical patent/CN113448689A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

本发明提供了一种运行期Dubbo协议转换装置及方法,可用于云计算技术领域,该装置包括:Dubbo Service获取模块,用于在运行期受到触发后,解析获得DubboService配置信息;确定要被替换的Dubbo Service对象的类型和id;获得要被替换的Dubbo Service对象;Controller生成模块,用于从Service接口生成对应的Controller对象;Dubbo Service替换模块,用于使用生成的Controller对象来替换要被替换的Dubbo Service对象。本发明可以进行运行期Dubbo协议转换,成本低,自动化程度高。

Description

运行期Dubbo协议转换装置及方法
技术领域
本发明涉及云计算技术领域,尤其涉及一种运行期Dubbo协议转换装置及方法。
背景技术
随着云平台发展逐渐成熟,云下系统逐渐向云平台迁移,由于程序运行的环境发生变化,从之前的虚拟机运行环境变为PaaS环境。这些变化使程序在RPC调用中使用的协议也要随之发生变化,从云下的Dubbo协议更换为云上的Http协议。程序中可能存在成百上千的接口,为了转换协议需要对所有接口进行协议更换,这样会涉及大量改造成本。如何用一种通用方式,自动将所有接口的协议进行转换,来减少开发成本,将是一个亟需解决的问题。
Springboot框架目前是主流且功能强大的Java系统框架,可以满足快速搭建项目的需要。各大型网站均使用Springboot作为基础开发框架,业务代码基于该框架之上开发。
Dubbo协议框架是一款高性能、轻量级的开源Java服务框架,提供面向接口代理的高性能RPC调用,智能容错和负责均衡,服务自动注册与发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。该协议框架由阿里巴巴开发,同样也是广为使用的主流框架。
目前有两种方案对协议进行转换。
方案一:通过手动修改,将Dubbo协议接口翻译为Http协议接口,这种方案当然会涉及大量代码的编写,开发成本较大。
方案二:Dubbo框架提供Http协议的配置方式,但是该配置方法需要对已有业务代码修改,虽然不用新开发接口代码,但是对已有代码的修改影响范围同样具大,要精确定位到已有代码修改的位置也比较繁琐,配置的成本较高。
目前针对现有的Dubbo协议转换方案有以下几个缺点。
第一,开发改造成本高。目前的方案一需要开发新代码,将之前已有的代码全部新开发一套来替换,如果接口数量较多,这类重复操作会占用大量人力成本。方案二需要修改每个接口代码,首先定位到该代码就是一件费事费力的工作,这个过程与新开发的成本有过之而无不及。
第二,对开发人员要求高。目前的方案一对开发人员有一定要求,需要具备开发Http协议接口的能力。方案二对开发人员要求更高,既需要掌握Dubbo框架的Http接口配置方法,而且还要对已有项目代码非常熟悉,能够定位到需要修改的代码段。刚接触项目代码的人员,很难实施该两种方案。
综上所述,目前缺乏一种成本低的,通用的将Dubbo协议转换为Http协议的方法。
发明内容
本发明实施例提出一种运行期Dubbo协议转换装置,用以进行运行期Dubbo协议转换,成本低,自动化程度高,该装置包括:
Dubbo Service获取模块,用于在运行期受到触发后,解析Dubbo Service配置文件,获得Dubbo Service配置信息;基于Dubbo Service配置信息,确定要被替换的DubboService对象的类型和id,所述Dubbo Service对象用于提供Dubbo协议类型的bean;根据要被替换的Dubbo Service对象的类型和id获得要被替换的Dubbo Service对象,并发送至Dubbo Service替换模块;将Dubbo Service配置信息发送至Controller生成模块;
Controller生成模块,用于在获取到Dubbo Service配置信息后,基于DubboService配置信息从Service接口生成对应的Controller对象,将生成的Controller对象发送至Dubbo Service替换模块,所述Controller对象用于提供Http协议请求;
Dubbo Service替换模块,用于在接收到Controller对象和要被替换的DubboService对象后,使用生成的Controller对象来替换要被替换的Dubbo Service对象。
本发明实施例提出一种运行期Dubbo协议转换方法,用以进行运行期Dubbo协议转换,成本低,自动化程度高,该方法包括:
在运行期受到触发后,解析Dubbo Service配置文件,获得Dubbo Service配置信息;
基于Dubbo Service配置信息,确定要被替换的Dubbo Service对象的类型和id,所述Dubbo Service对象用于提供Dubbo协议类型的bean;
根据要被替换的Dubbo Service对象的类型和id获得要被替换的Dubbo Service对象;
基于Dubbo Service配置信息从Service接口生成对应的Controller对象,所述Controller对象用于提供Http协议请求;
使用生成的Controller对象来替换要被替换的Dubbo Service对象。
本发明实施例还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述运行期Dubbo协议转换方法。
本发明实施例还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述运行期Dubbo协议转换方法的计算机程序。
在本发明实施例中,Dubbo Service获取模块,用于在运行期受到触发后,解析Dubbo Service配置文件,获得Dubbo Service配置信息;基于Dubbo Service配置信息,确定要被替换的Dubbo Service对象的类型和id,所述Dubbo Service对象用于提供Dubbo协议类型的bean;根据要被替换的Dubbo Service对象的类型和id获得要被替换的DubboService对象,并发送至Dubbo Service替换模块;将Dubbo Service配置信息发送至Controller生成模块;Controller生成模块,用于在获取到Dubbo Service配置信息后,基于Dubbo Service配置信息从Service接口生成对应的Controller对象,将生成的Controller对象发送至Dubbo Service替换模块,所述Controller对象用于提供Http协议请求;Dubbo Service替换模块,用于在接收到Controller对象和要被替换的DubboService对象后,使用生成的Controller对象来替换要被替换的Dubbo Service对象。在上述过程中,在开发完成上述模块后,无需开发人员单独再开发任何代码,极大降低开发成本。本装置使用简单,使用者仅需在原工程中引入本装置,并配置注解即可使用。另外,本装置对原代码无入侵,使用时仅需要简单配置,不会对业务代码造成入侵。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中运行期Dubbo协议转换装置的示意图;
图2为本发明实施例中运行期Dubbo协议转换装置的另一示意图;
图3为本发明实施例中运行期Dubbo协议转换方法的流程图;
图4为本发明实施例中生成Controller对象的流程图;
图5为本发明实施例中计算机设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
首先对本发明实施例涉及的术语进行解释。
RPC:远程过程调用,通俗说就是一个机器调用另一个机器的服务。
运行期:指在程序运行过程中。
Dubbo协议:一种RPC协议。
Http协议:一种RPC协议。
Spring:一个Java企业级框架,是Spring系列框架的基础。
Springboot:一种Java开发框架,由Spring衍生而来。
.class文件:文件后缀为.class的文件,是Java文件编译后生成的可用Java虚拟机执行的字节码文件。
云上:云平台。
云下:传统虚拟机平台。
Bean:被Spring容器管理的Java对象,每个对象都有一些自己的属性和行为。
Dubbo Service:Dubbo协议类型的bean。
Controller:负责提供Http协议请求。
类:用class关键字定义的,表示定义一种模板,内部有一些处理逻辑。
接口:用interface关键字定义的,表示定义一种模板,它没有定义逻辑实现,逻辑实现需要在实现接口的类中定义。
注解:代码里的特殊标记,配置方法是在代码上加@XXX。
图1为本发明实施例中运行期Dubbo协议转换装置的示意图,如图1所示,该装置包括:
Dubbo Service获取模块101,用于解析Dubbo Service配置文件,获得DubboService配置信息;基于Dubbo Service配置信息,确定要被替换的Dubbo Service对象的类型和id,所述Dubbo Service对象用于提供Dubbo协议类型的bean;根据要被替换的DubboService对象的类型和id获得要被替换的Dubbo Service对象,并发送至Dubbo Service替换模块;将Dubbo Service配置信息发送至Controller生成模块;
Controller生成模块102,用于在获取到Dubbo Service配置信息后,基于DubboService配置信息从Service接口生成对应的Controller对象,将生成的Controller对象发送至Dubbo Service替换模块,所述Controller对象用于提供Http协议请求;
Dubbo Service替换模块103,用于在接收到Controller对象和要被替换的DubboService对象后,使用生成的Controller对象来替换要被替换的Dubbo Service对象。
在上述实施例中,在开发完成上述模块后,无需开发人员单独再开发任何代码,极大降低开发成本。本装置使用简单,使用者仅需在原工程中引入本装置,并配置注解即可使用。另外,本装置对原代码无入侵,使用时仅需要简单配置,不会对业务代码造成入侵。
具体实施时,在将云下转至云上时,需要采用本发明实施例提出的装置及方法进行PRC协议转换。
图2为本发明实施例中运行期Dubbo协议转换装置的另一示意图,在一实施例中,所述装置还包括ApplicationContextAware模块104,用于获取Spring容器上下文,基于要被替换的Dubbo Service对象的类型和id,通过Spring容器上下文获取要被替换的DubboService对象,并反馈至Dubbo Service获取模块;
所述Dubbo Service获取模块101具体用于:基于Dubbo Service配置信息中的ref参数值,确定要被替换的Dubbo Service对象的id;基于Dubbo Service配置信息中的interface参数值,确定要被替换的Dubbo Service对象的类型;将要被替换的DubboService对象的类型和id发送至ApplicationContextAware模块,并接收ApplicationContextAware模块反馈的要被替换的Dubbo Service对象。
具体实施时,Dubbo Service获取模块,用于在运行期受到触发后,解析DubboService配置文件,获得Dubbo Service配置信息,其中,Dubbo Service配置文件一般是XML文件,Dubbo Service配置信息包括ref参数值和interface参数值,如<dubbo:serviceinterface="com.abc.DemoService"ref="demoService"group="groupA",version="1.0"/>。
在图2中,Dubbo Service获取模块依赖于ApplicationContextAware模块,DubboService获取模块通过ApplicationContextAware模块获取到Dubbo Service对象后,通过Controller生成模块生成与Dubbo Service对象对应的Controller对象,最后DubboService替换模块来完成将Dubbo Service对象到Controller对象的替换过程,即完成从Dubbo协议到Http协议的转换。
在一实施例中,Controller生成模块具体用于:
根据Service的接口类型信息,使用Javassist工具动态创建Controller对象;
为Controller对象添加@RestController注解;
为Controller对象中的所有公有方法添加@RequestMapping注解;
将Dubbo配置信息拼接出URL;
将所述URL添加为@RequestMapping注解的参数值;
将Service接口参数添加为@RequestBody注解。
在上述实施例例中,用于拼接出URL的Dubbo配置信息包括group、version、interface,将group、version、interface通过”/”拼接出URL,形如<group>/<version>/<interface>。例如:Dubbo配置信息为<dubbo:service interface="com.abc.DemoService"ref="demoService"group="groupA",version="1.0"/>,生成的注解形式为@RequestMapping(“groupA/1.0/com.abc.DemoService”)。
在一实施例中,所述装置还包括触发模块105,用于在启动Spring工程后,调起BeanPostProcessor类,触发Dubbo Service获取模块。
具体实施时,将使用了Spring框架的Spring工程运行起来,Spring框架启动过程中会扫描Dubbo Service XML配置文件,从配置文件中加载并实例化Dubbo Service。BeanPostProcessor在Spring启动的过程中被调起,触发Dubbo Service获取模块开始执行流程。
在一实施例中,触发模块还用于:在生成的Controller对象替换要被替换的DubboService对象后,生成替换成功消息,并反馈至Spring工程。
在上述实施例中,反馈至Spring工程后,就可以继续完成Spring启动的后续处理,启动完成后,Dubbo协议接口就被转换为Http协议接口。
综上所述,在本发明实施例提出的装置中,Dubbo Service获取模块,用于在运行期受到触发后,解析Dubbo Service配置文件,获得Dubbo Service配置信息;基于DubboService配置信息,确定要被替换的Dubbo Service对象的类型和id,所述Dubbo Service对象用于提供Dubbo协议类型的bean;根据要被替换的Dubbo Service对象的类型和id获得要被替换的Dubbo Service对象,并发送至Dubbo Service替换模块;将Dubbo Service配置信息发送至Controller生成模块;Controller生成模块,用于在获取到Dubbo Service配置信息后,基于Dubbo Service配置信息从Service接口生成对应的Controller对象,将生成的Controller对象发送至Dubbo Service替换模块,所述Controller对象用于提供Http协议请求;Dubbo Service替换模块,用于在接收到Controller对象和要被替换的DubboService对象后,使用生成的Controller对象来替换要被替换的Dubbo Service对象。在上述过程中,在开发完成上述模块后,无需开发人员单独再开发任何代码,极大降低开发成本。本装置使用简单,使用者仅需在原工程中引入本装置,并配置注解即可使用。另外,本装置对原代码无入侵,使用时仅需要简单配置,不会对业务代码造成入侵。
本发明实施例还提出一种运行期Dubbo协议转换方法,其原理与运行期Dubbo协议转换装置类似,这里不再赘述。
图3为本发明实施例中运行期Dubbo协议转换方法的流程图,如图3所示,包括:
步骤301,在运行期受到触发后,解析Dubbo Service配置文件,获得DubboService配置信息;
步骤302,基于Dubbo Service配置信息,确定要被替换的Dubbo Service对象的类型和id,所述Dubbo Service对象用于提供Dubbo协议类型的bean;
步骤303,根据要被替换的Dubbo Service对象的类型和id获得要被替换的DubboService对象;
步骤304,基于Dubbo Service配置信息从Service接口生成对应的Controller对象,所述Controller对象用于提供Http协议请求;
步骤305,使用生成的Controller对象来替换要被替换的Dubbo Service对象。
在一实施例中,基于Dubbo Service配置信息,确定要被替换的Dubbo Service对象的类型和id,包括:
基于Dubbo Service配置信息中的ref参数值,确定要被替换的Dubbo Service对象的id;基于Dubbo Service配置信息中的interface参数值,确定要被替换的DubboService对象的类型;
根据要被替换的Dubbo Service对象的类型和id获得要被替换的Dubbo Service对象,包括:
获取Spring容器上下文,基于要被替换的Dubbo Service对象的类型和id,通过Spring容器上下文获取要被替换的Dubbo Service对象。
图4为本发明实施例中生成Controller对象的流程图,在一实施例中,基于DubboService配置信息从Service接口生成对应的Controller对象,包括:
步骤401,根据Service的接口类型信息,使用Javassist工具动态创建Controller对象;
步骤402,为Controller对象添加@RestController注解;
步骤403,为Controller对象中的所有公有方法添加@RequestMapping注解;
步骤404,将Dubbo配置信息拼接出URL;
步骤405,将所述URL添加为@RequestMapping注解的参数值;
步骤406,将Service接口参数添加为@RequestBody注解。
在一实施例中,所述方法还包括:在启动Spring工程后,调起BeanPostProcessor类,开始解析Dubbo Service配置文件。
在一实施例中,所述方法还包括:
在生成的Controller对象替换要被替换的Dubbo Service对象后,生成替换成功消息,并反馈至Spring工程。
综上所述,在本发明实施例提出的方法中,在运行期受到触发后,解析DubboService配置文件,获得Dubbo Service配置信息;基于Dubbo Service配置信息,确定要被替换的Dubbo Service对象的类型和id,所述Dubbo Service对象用于提供Dubbo协议类型的bean;根据要被替换的Dubbo Service对象的类型和id获得要被替换的Dubbo Service对象;基于Dubbo Service配置信息从Service接口生成对应的Controller对象,所述Controller对象用于提供Http协议请求;使用生成的Controller对象来替换要被替换的Dubbo Service对象。在上述过程中,在开发完成上述模块后,无需开发人员单独再开发任何代码,极大降低开发成本。本方法使用简单,使用者仅需在原工程中引入本装置,并配置注解即可使用。另外,本方法对原代码无入侵,使用时仅需要简单配置,不会对业务代码造成入侵。
本发明的实施例还提供一种计算机设备,图5为本发明实施例中计算机设备的示意图,该计算机设备能够实现上述实施例中的运行期Dubbo协议转换方法中全部步骤,所述计算机设备具体包括如下内容:
处理器(processor)501、存储器(memory)502、通信接口(CommunicationsInterface)503和通信总线504;
其中,所述处理器501、存储器502、通信接口503通过所述通信总线504完成相互间的通信;所述通信接口503用于实现服务器端设备、检测设备以及用户端设备等相关设备之间的信息传输;
所述处理器501用于调用所述存储器502中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的运行期Dubbo协议转换方法中的全部步骤。
本发明的实施例还提供一种计算机可读存储介质,能够实现上述实施例中的运行期Dubbo协议转换方法中全部步骤,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的运行期Dubbo协议转换方法的全部步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种运行期Dubbo协议转换装置,其特征在于,包括:
Dubbo Service获取模块,用于在运行期受到触发后,解析Dubbo Service配置文件,获得Dubbo Service配置信息;基于Dubbo Service配置信息,确定要被替换的Dubbo Service对象的类型和id,所述Dubbo Service对象用于提供Dubbo协议类型的bean;根据要被替换的Dubbo Service对象的类型和id获得要被替换的Dubbo Service对象,并发送至DubboService替换模块;将Dubbo Service配置信息发送至Controller生成模块;
Controller生成模块,用于在获取到Dubbo Service配置信息后,基于Dubbo Service配置信息从Service接口生成对应的Controller对象,将生成的Controller对象发送至Dubbo Service替换模块,所述Controller对象用于提供Http协议请求;
Dubbo Service替换模块,用于在接收到Controller对象和要被替换的Dubbo Service对象后,使用生成的Controller对象来替换要被替换的Dubbo Service对象。
2.如权利要求1所述的运行期Dubbo协议转换装置,其特征在于,还包括ApplicationContextAware模块,用于获取Spring容器上下文,基于要被替换的DubboService对象的类型和id,通过Spring容器上下文获取要被替换的Dubbo Service对象,并反馈至Dubbo Service获取模块;
所述Dubbo Service获取模块具体用于:基于Dubbo Service配置信息中的ref参数值,确定要被替换的Dubbo Service对象的id;基于Dubbo Service配置信息中的interface参数值,确定要被替换的Dubbo Service对象的类型;将要被替换的Dubbo Service对象的类型和id发送至ApplicationContextAware模块,并接收ApplicationContextAware模块反馈的要被替换的Dubbo Service对象。
3.如权利要求1所述的运行期Dubbo协议转换装置,其特征在于,Controller生成模块具体用于:
根据Service的接口类型信息,使用Javassist工具动态创建Controller对象;
为Controller对象添加@RestController注解;
为Controller对象中的所有公有方法添加@RequestMapping注解;
将Dubbo配置信息拼接出URL;
将所述URL添加为@RequestMapping注解的参数值;
将Service接口参数添加为@RequestBody注解。
4.如权利要求1所述的运行期Dubbo协议转换装置,其特征在于,还包括触发模块,用于在启动Spring工程后,调起BeanPostProcessor类,触发Dubbo Service获取模块。
5.如权利要求4所述的运行期Dubbo协议转换装置,其特征在于,触发模块还用于:在生成的Controller对象替换要被替换的Dubbo Service对象后,生成替换成功消息,并反馈至Spring工程。
6.一种运行期Dubbo协议转换方法,其特征在于,包括:
在运行期受到触发后,解析Dubbo Service配置文件,获得Dubbo Service配置信息;
基于Dubbo Service配置信息,确定要被替换的Dubbo Service对象的类型和id,所述Dubbo Service对象用于提供Dubbo协议类型的bean;
根据要被替换的Dubbo Service对象的类型和id获得要被替换的Dubbo Service对象;
基于Dubbo Service配置信息从Service接口生成对应的Controller对象,所述Controller对象用于提供Http协议请求;
使用生成的Controller对象来替换要被替换的Dubbo Service对象。
7.如权利要求6所述的运行期Dubbo协议转换方法,其特征在于,基于Dubbo Service配置信息,确定要被替换的Dubbo Service对象的类型和id,包括:
基于Dubbo Service配置信息中的ref参数值,确定要被替换的Dubbo Service对象的id;基于Dubbo Service配置信息中的interface参数值,确定要被替换的Dubbo Service对象的类型;
根据要被替换的Dubbo Service对象的类型和id获得要被替换的Dubbo Service对象,包括:
获取Spring容器上下文,基于要被替换的Dubbo Service对象的类型和id,通过Spring容器上下文获取要被替换的Dubbo Service对象。
8.如权利要求6所述的运行期Dubbo协议转换方法,其特征在于,基于Dubbo Service配置信息从Service接口生成对应的Controller对象,包括:
根据Service的接口类型信息,使用Javassist工具动态创建Controller对象;
为Controller对象添加@RestController注解;
为Controller对象中的所有公有方法添加@RequestMapping注解;
将Dubbo配置信息拼接出URL;
将所述URL添加为@RequestMapping注解的参数值;
将Service接口参数添加为@RequestBody注解。
9.如权利要求6所述的运行期Dubbo协议转换方法,其特征在于,还包括:
在启动Spring工程后,调起BeanPostProcessor类,开始解析Dubbo Service配置文件。
10.如权利要求9所述的运行期Dubbo协议转换方法,其特征在于,还包括:
在生成的Controller对象替换要被替换的Dubbo Service对象后,生成替换成功消息,并反馈至Spring工程。
11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求6至10任一项所述方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求6至10任一项所述方法的计算机程序。
CN202110780082.6A 2021-07-09 2021-07-09 运行期Dubbo协议转换装置及方法 Pending CN113448689A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110780082.6A CN113448689A (zh) 2021-07-09 2021-07-09 运行期Dubbo协议转换装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110780082.6A CN113448689A (zh) 2021-07-09 2021-07-09 运行期Dubbo协议转换装置及方法

Publications (1)

Publication Number Publication Date
CN113448689A true CN113448689A (zh) 2021-09-28

Family

ID=77815689

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110780082.6A Pending CN113448689A (zh) 2021-07-09 2021-07-09 运行期Dubbo协议转换装置及方法

Country Status (1)

Country Link
CN (1) CN113448689A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114416599A (zh) * 2022-03-28 2022-04-29 中建电子商务有限责任公司 一种基于Dubbo服务接口生成泛化调用进行接口测试的方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255615A (zh) * 2017-11-30 2018-07-06 平安科技(深圳)有限公司 跨语言调用方法、服务器及存储介质
CN109120473A (zh) * 2018-07-27 2019-01-01 广州市百果园信息技术有限公司 接口请求框架实现方法、接口测试方法及其对应的装置
CN110891057A (zh) * 2019-11-22 2020-03-17 北京启迪区块链科技发展有限公司 一种协议转换的方法、装置、设备及存储介质
CN111782306A (zh) * 2020-06-30 2020-10-16 平安银行股份有限公司 接口调用信息的处理方法及装置、电子设备、存储介质
CN112685193A (zh) * 2020-12-18 2021-04-20 易久批信息技术有限公司 一种微服务网关接口暴露及聚合方法
CN112688915A (zh) * 2020-12-07 2021-04-20 北京小米松果电子有限公司 跨协议通信方法、装置及服务器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255615A (zh) * 2017-11-30 2018-07-06 平安科技(深圳)有限公司 跨语言调用方法、服务器及存储介质
CN109120473A (zh) * 2018-07-27 2019-01-01 广州市百果园信息技术有限公司 接口请求框架实现方法、接口测试方法及其对应的装置
CN110891057A (zh) * 2019-11-22 2020-03-17 北京启迪区块链科技发展有限公司 一种协议转换的方法、装置、设备及存储介质
CN111782306A (zh) * 2020-06-30 2020-10-16 平安银行股份有限公司 接口调用信息的处理方法及装置、电子设备、存储介质
CN112688915A (zh) * 2020-12-07 2021-04-20 北京小米松果电子有限公司 跨协议通信方法、装置及服务器
CN112685193A (zh) * 2020-12-18 2021-04-20 易久批信息技术有限公司 一种微服务网关接口暴露及聚合方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
懒惰的孩子: ""基于Springboot的动态注入Web控制器--Javassist实现"", pages 1 - 3, Retrieved from the Internet <URL:https://blog.csdn.net/u014438534/article/details/103557018> *
迟到的月亮: ""Http服务与Dubbo服务相互转换的Spring Boot代理节点实现"", pages 1 - 8, Retrieved from the Internet <URL:https://blog.csdn.net/qq_32193151/article/details/76264445> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114416599A (zh) * 2022-03-28 2022-04-29 中建电子商务有限责任公司 一种基于Dubbo服务接口生成泛化调用进行接口测试的方法
CN114416599B (zh) * 2022-03-28 2022-07-01 中建电子商务有限责任公司 一种基于Dubbo服务接口生成泛化调用进行接口测试的方法

Similar Documents

Publication Publication Date Title
CN110198247B (zh) 接口测试方法及系统
US8375362B1 (en) Wizard for web service search adapter
CN106997298B (zh) 一种应用资源获取方法及装置
CN104484216A (zh) 服务接口文档和在线测试工具生成方法、装置
CN108306844B (zh) 用于服务器与客户端之间的api通信的方法
CN111026634A (zh) 一种接口自动化测试系统、方法、装置及存储介质
CN112114890A (zh) 小程序的处理方法、装置、设备及存储介质
TW201413584A (zh) 偵測與解析應用程式介面之方法與系統
CN112769706B (zh) 组件化路由方法及系统
CN113971110A (zh) 接口测试方法、装置、设备与计算机可读存储介质
CN101021786A (zh) 一种调用通用构件的方法
CN114117190A (zh) 数据处理方法、装置、存储介质及电子设备
EP1698984A1 (en) System and method for conversion of WEB services&#39; applications into component based applications for mobile devices
US9996344B2 (en) Customized runtime environment
CN113448689A (zh) 运行期Dubbo协议转换装置及方法
US20200110584A1 (en) Automated code generation for functional testing of software applications
WO2024002302A1 (zh) 应用管理方法、应用订阅方法及相关设备
Spillner et al. Ad-hoc usage of web services with dynvoker
CN116301951B (zh) 一种基于kubernetes的微服务应用安装升级方法及装置
CN116755788A (zh) 一种线上规则修改方法、装置、设备及存储介质
CN112328470A (zh) 一种自动化运维测试方法、装置、设备及存储介质
WO2023083071A1 (zh) 视图交互方法、装置、电子设备及计算机可读介质
US9537931B2 (en) Dynamic object oriented remote instantiation
CN113495723B (zh) 一种调用功能组件的方法、装置及存储介质
US6678742B1 (en) Object-oriented computer system and computer-readable storage medium which stores program

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination