CN109298954B - 一种智能调用Dubbo远程服务的方法及装置 - Google Patents
一种智能调用Dubbo远程服务的方法及装置 Download PDFInfo
- Publication number
- CN109298954B CN109298954B CN201811076788.9A CN201811076788A CN109298954B CN 109298954 B CN109298954 B CN 109298954B CN 201811076788 A CN201811076788 A CN 201811076788A CN 109298954 B CN109298954 B CN 109298954B
- Authority
- CN
- China
- Prior art keywords
- type
- java
- parameter
- setting
- value
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000006243 chemical reaction Methods 0.000 claims description 95
- 238000013507 mapping Methods 0.000 claims description 43
- 238000004806 packaging method and process Methods 0.000 claims description 9
- 238000013497 data interchange Methods 0.000 abstract 2
- 230000009466 transformation Effects 0.000 abstract 2
- 238000010586 diagram Methods 0.000 description 5
- 239000012634 fragment Substances 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- OLDXRTOEUPVZKB-UHFFFAOYSA-N B1CCCC1 Chemical compound B1CCCC1 OLDXRTOEUPVZKB-UHFFFAOYSA-N 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003313 weakening effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种智能调用Dubbo远程服务的方法及装置,此方法包括:设置针对不同JAVA参数类型的设置规则和转换规则;使用标准数据交换格式对Dubbo远程服务接口的参数进行参数配置,根据设置规则设置相应JAVA参数类型的参数,将所述参数配置的具体内容解析为以JAVA参数类型为单元的数据,针对不同的JAVA参数类型采用相应的转换规则进行转换,获得转换后的JAVA对象,将所有JAVA对象封装成符合所述标准数据交换格式的参数列表,使用所述参数列表调用所述Dubbo远程服务接口。本发明在通过仅需指定服务接口名字和参数的动态配置信息即可智能调用远程服务,大大简化调用复杂度。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种智能调用Dubbo远程服务的方法及装置。
背景技术
Dubbo技术是阿里巴巴开源的一个通过高性能的远程过程调用(RPC)实现输出和输入功能的Java远程服务框架。
现有的Dubbo远程调用提供了一种直接依赖服务接口,通过接口来调用远程服务,如图1所示,Dubbo服务注册集群中心负责管理服务的注册和服务请求的分发。调用服务首先由提供的Java对象输入参数通过服务接口访问服务注册集群中心,由注册中心分发服务接口所对应的服务实现,成功响应后,按原路返回返回结果给调用服务端,获得Java对象的输出结果。
现有的上述方式中,需要通过编写Java代码明确指定调用方式以及接口输入参数相应的细节,比如参数类型、参数顺序、参数值。最后还需要编写相应的代码来处理输出结果对象,输出结果由关联服务接口决定,由于服务接口业务的多样性,导致输出结果的不确定性,并增加了编写代码难度。
发明内容
为了解决上述技术问题,本发明提供了一种智能调用Dubbo远程服务的方法及装置。
本发明提供的智能调用Dubbo远程服务的方法,包括:
设置针对不同JAVA参数类型的设置规则和转换规则;
使用标准数据交换格式对Dubbo远程服务接口的参数进行参数配置,根据设置规则设置相应JAVA参数类型的参数,将所述参数配置的具体内容解析为以JAVA参数类型为单元的数据,针对不同的JAVA参数类型采用相应的转换规则进行转换,获得转换后的JAVA对象,将所有JAVA对象封装成符合所述标准数据交换格式的参数列表,使用所述参数列表调用所述Dubbo远程服务接口。
上述智能调用Dubbo远程服务的方法还具有以下特点:
设置针对不同JAVA参数类型的设置规则包括以下方式中的至少一种:
方式一,JAVA参数类型是JAVA基本类型,或者,是JAVA对象类型时,设置规则包括:设置参数名称,设置参数的基本类型类名,设置参数值;
JAVA基本类型包括boolean,char,byte,short,int,long,float,double,JAVA基本对象类型包括:Boolean,Character,Byte,Short,Integer,Long,Float,Double和String;
方式二,JAVA参数类型是JAVA基本类型的数组类型,或者,是JAVA基本对象类型的数组类型时,设置规则包括:设置参数名称,设置用于表示数组对象类型的数组类名,设置数组对象中的每条记录值;
JAVA基本类型的数组类型包括:boolean[],char[],byte[],short[],int[],long[],float[],double[],JAVA基本对象类型的数组类型包括:Boolean[],Character[],Byte[],Short[],Integer[],Long[],Float[],Double[]和String[];
方式三,JAVA参数类型是JAVA非基本对象类型(例如POJO对象类型)时,设置规则包括:设置参数名称,设置用于表示JAVA对象的类名,设置JAVA对象中每个属性的键值对;
方式四,JAVA参数类型是JAVA集合类的List列表类型或Set集对象类型时,设置规则包括:设置参数名称,设置用于表示该集合类型List或Set集对象的类名,设置List列表类型或Set集对象类型中所有记录值序列;
方式五,JAVA参数类型是JAVA集合类的Map映射对象类型时,设置规则包括:设置参数名称,设置用于表示Map映射对象类型的类名,设置Map映射对象中每条记录的键值对;
方式六,输入参数的类型是JAVA日期类型或JAVA时间类型时,设置规则包括:设置参数名称,设置用于表示JAVA日期或时间的类名,设置参数值,设置解析参数值的日期或时间的格式值。
上述智能调用Dubbo远程服务的方法还具有以下特点:
JAVA参数类型是JAVA基本类型中的boolean、int或double类型时,或者JAVA参数类型是String对象类型时,设置规则包括:设置参数名称,设置参数值。
上述智能调用Dubbo远程服务的方法还具有以下特点:
JAVA参数类型是JAVA基本类型,或者,是JAVA基本类型的对象类型时,或者,是String对象类型时,转换规则是:通过类名进行JAVA参数类型匹配,确定参数值是否是空,如果为空,则设置为默认值,如果不为空,执行基础转换规则,所述基础转换规则为:参数值是数字对象时通过数字对象获取相应的基本类型值,参数值不是数字对象时通过相应基本类型对象来解析参数值;
JAVA参数类型是JAVA基本类型的数组对象,或者,是JAVA基本类型对象的数组对象类型时,转换规则是:通过类名来确定是否为数组,并通过数组类型映射表匹配数组类型,对数组中的值序列分别执行所述基础转换规则,组装成该类型的数组对象;
JAVA参数类型是简单的JAVA对象类型时,转换规则是:通过类名确定为简单的JAVA对象时,分别对对象的每个属性值执行所述基础转换规则;
JAVA参数类型是JAVA集合类的List列表或Set集类型时,转换规则是:通过类名来确定为集合类时,对List列表或Set集对象中的值序列分别进行执行所述基础转换规则,最后再组装成List列表或Set集对象;
JAVA参数类型是JAVA集合类的Map映射类型时,转换规则是:首先通过类名来确定为映射类时,对Map映射类型对象中的键值对分别执行所述基础转换规则,最后再组装成相应的Map对象;
JAVA参数类型是JAVA日期或时间类型时,转换规则是:通过类名进行日期或时间对象的类型匹配,确定是否设置日期或时间格式,如果设置,则采用该日期或时间格式值对参数值进行解析和格式化;如果未设置,则采用相应的日期或时间对象类来进行默认的解析参数值。
上述智能调用Dubbo远程服务的方法还具有以下特点:
所述方法还包括:所述Dubbo远程服务接口的返回结果为具体值时,将此具体值作为调用结果,所述Dubbo远程服务接口的返回结果为对象时,使用对象JSON序列化技术将对象序列化成相应的JSON串作为调用结果。
本发明提供的智能调用Dubbo远程服务的装置,包括:
设置模块,用于设置针对不同JAVA参数类型的设置规则和转换规则;
配置模块,用于使用标准数据交换格式对Dubbo远程服务接口的参数进行参数配置,根据设置规则设置相应JAVA参数类型的参数;
解析模块,用于将所述参数配置的具体内容解析为以JAVA参数类型为单元的数据;
转换模块,用于针对不同的JAVA参数类型采用相应的转换规则进行转换,获得转换后的JAVA对象;
封装模块,用于将所有JAVA对象封装成符合所述标准数据交换格式的参数列表,
调用模块,用于使用所述参数列表调用所述Dubbo远程服务接口。
上述智能调用Dubbo远程服务的装置还具有以下特点:
设置针对不同JAVA参数类型的设置规则包括以下方式中的至少一种:
方式一,JAVA参数类型是JAVA基本类型,或者,是JAVA对象类型时,设置规则包括:设置参数名称,设置参数的基本类型类名,设置参数值;
JAVA基本类型包括boolean,char,byte,short,int,long,float,double,JAVA基本对象类型包括:Boolean,Character,Byte,Short,Integer,Long,Float,Double和String;
方式二,JAVA参数类型是JAVA基本类型的数组类型,或者,是JAVA基本对象类型的数组类型时,设置规则包括:设置参数名称,设置用于表示数组对象类型的数组类名,设置数组对象中的每条记录值;
JAVA基本类型的数组类型包括:boolean[],char[],byte[],short[],int[],long[],float[],double[],JAVA基本对象类型的数组类型包括:Boolean[],Character[],Byte[],Short[],Integer[],Long[],Float[],Double[]和String[];
方式三,JAVA参数类型是JAVA非基本对象类型(例如POJO对象类型)时,设置规则包括:设置参数名称,设置用于表示JAVA对象的类名,设置JAVA对象中每个属性的键值对;
方式四,JAVA参数类型是JAVA集合类的List列表类型或Set集对象类型时,设置规则包括:设置参数名称,设置用于表示该集合类型List或Set集对象的类名,设置List列表类型或Set集对象类型中所有记录值序列;
方式五,JAVA参数类型是JAVA集合类的Map映射对象类型时,设置规则包括:设置参数名称,设置用于表示Map映射对象类型的类名,设置Map映射对象中每条记录的键值对;
方式六,输入参数的类型是JAVA日期类型或JAVA时间类型时,设置规则包括:设置参数名称,设置用于表示JAVA日期或时间的类名,设置参数值,设置解析参数值的日期或时间的格式值。
上述智能调用Dubbo远程服务的装置还具有以下特点:
JAVA参数类型是JAVA基本类型中的boolean、int或double类型时,或者JAVA参数类型是String对象类型时,设置规则包括:设置参数名称,设置参数值。
上述智能调用Dubbo远程服务的装置还具有以下特点:
JAVA参数类型是JAVA基本类型,或者,是JAVA基本类型的对象类型时,或者,是String对象类型时,转换规则是:通过类名进行JAVA参数类型匹配,确定参数值是否是空,如果为空,则设置为默认值,如果不为空,执行基础转换规则,所述基础转换规则为:参数值是数字对象时通过数字对象获取相应的基本类型值,参数值不是数字对象时通过相应基本类型对象来解析参数值;
JAVA参数类型是JAVA基本类型的数组对象,或者,是JAVA基本类型对象的数组对象类型时,转换规则是:通过类名来确定是否为数组,并通过数组类型映射表匹配数组类型,对数组中的值序列分别执行所述基础转换规则,组装成该类型的数组对象;
JAVA参数类型是简单的JAVA对象类型时,转换规则是:通过类名确定为简单的JAVA对象时,分别对对象的每个属性值执行所述基础转换规则;
JAVA参数类型是JAVA集合类的List列表或Set集类型时,转换规则是:通过类名来确定为集合类时,对List列表或Set集对象中的值序列分别进行执行所述基础转换规则,最后再组装成List列表或Set集对象;
JAVA参数类型是JAVA集合类的Map映射类型时,转换规则是:首先通过类名来确定为映射类时,对Map映射类型对象中的键值对分别执行所述基础转换规则,最后再组装成相应的Map对象;
JAVA参数类型是JAVA日期或时间类型时,转换规则是:通过类名进行日期或时间对象的类型匹配,确定是否设置日期或时间格式,如果设置,则采用该日期或时间格式值对参数值进行解析和格式化;如果未设置,则采用相应的日期或时间对象类来进行默认的解析参数值。
上述智能调用Dubbo远程服务的装置还具有以下特点:
所述装置还包括结果统一模块,用于在所述Dubbo远程服务接口的返回结果为具体值时,将此具体值作为调用结果,在所述Dubbo远程服务接口的返回结果为对象时,使用对象JSON序列化技术将对象序列化成相应的JSON串作为调用结果。
本发明在通过仅需指定服务接口名字和参数的动态配置信息即可调用远程服务,在不编写任何与服务接口相关代码的前提下,无需服务接口的依赖,不必考虑参数类型与编程语言相关的兼容性问题,也不用关注参数的类型,也不需要维护不确定性的输出结果,远程服务调用的输出结果最终将以标准JSON格式进行统一输出,来达到简化远程调用和统一输出的解决方法。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是现有技术中依赖服务接口的调用Dubbo远程服务的方法示意图;
图2是本发明中调用Dubbo远程服务的方法示意图;
图3是智能调用Dubbo远程服务的方法的流程图;
图4是智能调用Dubbo远程服务的装置的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图2是本发明中调用Dubbo远程服务的方法示意图,本发明无需依赖Dubbo远程服务接口。
如图3所示,智能调用Dubbo远程服务的方法,包括:
步骤301,设置针对不同JAVA参数类型的设置规则和转换规则;
步骤302,使用标准数据交换格式对Dubbo远程服务接口的参数进行参数配置,根据设置规则设置相应JAVA参数类型的参数,将参数配置的具体内容解析为以JAVA参数类型为单元的数据,针对不同的JAVA参数类型采用相应的转换规则进行转换,获得转换后的JAVA对象,将所有JAVA对象封装成符合标准数据交换格式的参数列表;
步骤303,使用参数列表调用Dubbo远程服务接口。
步骤301中,标准数据交换格式为JSON格式。
步骤302中,设置针对不同JAVA参数类型的设置规则包括以下方式中的至少一种:
方式一,JAVA参数类型是JAVA基本类型,或者,是JAVA对象类型时,设置规则包括:设置参数名称,设置参数的基本类型类名,设置参数值。
JAVA基本类型包括boolean,char,byte,short,int,long,float,double,JAVA基本对象类型包括:Boolean,Character,Byte,Short,Integer,Long,Float,Double和String,其中前八个对象类型是与基本类型相对应的。
方式二,JAVA参数类型是JAVA基本类型的数组类型,或者,是JAVA基本对象类型的数组类型时,设置规则包括:设置参数名称,设置用于表示数组对象类型的数组类名,设置数组对象中的每条记录值;
JAVA基本类型的数组类型包括:boolean[],char[],byte[],short[],int[],long[],float[],double[],JAVA基本对象类型的数组类型包括:Boolean[],Character[],Byte[],Short[],Integer[],Long[],Float[],Double[]和String[]。
方式三,JAVA参数类型是JAVA非基本对象类型(例如POJO(Plain Old JavaObject)对象类型)时,设置规则包括:设置参数名称,设置用于表示JAVA对象的类名,设置JAVA对象中每个属性的键值对;
方式四,JAVA参数类型是JAVA集合类的List列表类型或Set集对象类型时,设置规则包括:设置参数名称,设置用于表示该集合类型List或Set集对象的类名,设置List列表类型或Set集对象类型中所有记录值序列;
方式五,JAVA参数类型是JAVA集合类的Map映射对象类型时,设置规则包括:设置参数名称,设置用于表示Map映射对象类型的类名,设置Map映射对象中每条记录的键值对;
方式六,输入参数的类型是JAVA日期类型或JAVA时间类型时,设置规则包括:设置参数名称,设置用于表示JAVA日期或时间的类名,设置参数值,设置解析参数值的日期或时间的格式值。
其中,
JAVA参数类型是JAVA基本类型中的boolean、int或double类型时,或者JAVA参数类型是String对象类型时,还可以使用简化的设置规则,包括:设置参数名称,设置参数值。
步骤302中转换规则具体如下:
1)JAVA参数类型是JAVA基本类型,或者,是JAVA基本类型的对象类型时,或者,是String对象类型时,转换规则是:通过类名进行JAVA参数类型匹配,确定参数值是否是空,如果为空,则设置为默认值,如果不为空,执行基础转换规则,基础转换规则为:参数值是数字对象时通过数字对象获取相应的基本类型值,参数值不是数字对象时通过相应基本类型对象来解析参数值。
例如:float数字基本类型作为输入参数时,需明确设置参数名称name字段,类名class字段及值value字段:
如果输入参数为对应的基本类型Float对象类型,则类名class字段需指定Float对象类型的Java对象名:
如下为基本类型匹配解析和转换的convertSingle方法中针对Float对象类型的代码实现片段:
例如:byte数字基本类型,通过Byte对象进行解析和转换的convertSingle方法片段:
输入参数是boolean基本类型,除可采用简省格式配置外,也可明确指定类名class:
如果是Boolean对象类型,必须明确指定class字段为Boolean类名:
针对boolean基本类型和Boolean对象类型进行统一的匹配解析,如下为基本类型匹配解析和转换的convertSingle方法中针对Boolean对象类型的代码实现片段:
2)JAVA参数类型是JAVA基本类型的数组对象,或者,是JAVA基本类型对象的数组对象类型时,转换规则是:通过类名来确定是否为数组,并通过数组类型映射表匹配数组类型,对数组中的值序列分别执行基础转换规则,组装成该类型的数组对象。
对于基本类型数组以及对应的对象数组,Java针对基本类型的数组类名有一套独特JAVA语言内部表示法,由于该表示法不利于配置和可读性,该发明构建一张数组类型映射表,如表1所示,为了方便开发人员易于阅读和理解数组的表示,具体映射表如下:
表1
比如基本类型boolean的数组对象,则可配置为:
匹配解析时,先通过映射表TYPE_MAPPING获得与配置相同class字段值,匹配数组对象后,针对数组中的值序列,将每个值通过调用convertSingle方法进行基本类型的匹配解析和转换(比如数字类基本类型byte、short、int、long、float、double和boolean类型等),最后返回整个转换后的数组对象,实现代码片段:
3)JAVA参数类型是POJO对象类型时,转换规则是:通过类名确定为简单的JAVA对象时,分别对对象的每个属性值执行基础转换规则。
例如:
class字段来指定POJO对象的类名,name字段为参数名字,value字段为该POJO对象的属性名与值的键值对:
4)JAVA参数类型是JAVA集合类的List列表或Set集类型时,转换规则是:通过类名来确定为集合类时,对List列表或Set集对象中的值序列分别进行执行基础转换规则,最后再组装成List列表或Set集对象;
5)JAVA参数类型是JAVA集合类的Map映射类型时,转换规则是:首先通过类名来确定为映射类时,对Map映射类型对象中的键值对分别执行基础转换规则,最后再组装成相应的Map对象;
Map对象类型是key/value键值对的组合配置:
匹配解析时,将逐条处理key和value的键值对,然后分别通过调用convertSingle方法进行类型匹配解析和转换,最后将转换后的键值对进行整合的实现代码片段:
6)JAVA参数类型是JAVA日期或时间类型时,转换规则是:通过类名进行日期或时间对象的类型匹配,确定是否设置日期或时间格式,如果设置,则采用该日期或时间格式值对参数值进行解析和格式化;如果未设置,则采用相应的日期或时间对象类来进行默认的解析参数值。
例如:LocalDate日期类型的配置为:
默认为ISO-8601日期格式,即“uuuu-MM-dd”格式。如果需指定其他日期格式,则需提供“pattern”字段指定解析格式:
首先检查是否设置了日期格式字段,如果设置,则使用该日期格式进行解析参数值,否则将采用默认的ISO-8601日期格式来解析
步骤303后,本方法还包括:Dubbo远程服务接口的返回结果为具体值时,将此具体值作为调用结果,Dubbo远程服务接口的返回结果为对象时,使用对象JSON序列化技术将对象序列化成相应的JSON串作为调用结果。
由于Java语言的限制,服务接口仅能返回单个值或单个对象,为了统一返回结果,Dubbo远程服务接口的返回结果为具体值时,将此具体值作为调用结果,比如boolean类型的返回结果:
如果返回结果为对象,将通过现有的对象JSON序列化技术,将对象序列化成相应的JSON串,作为统一键result的值,比如Person对象,则返回结果为:
如图4所示,智能调用Dubbo远程服务的装置,包括:
设置模块,用于设置针对不同JAVA参数类型的设置规则和转换规则;
配置模块,用于使用标准数据交换格式对Dubbo远程服务接口的参数进行参数配置,根据设置规则设置相应JAVA参数类型的参数;
解析模块,用于将参数配置的具体内容解析为以JAVA参数类型为单元的数据;
转换模块,用于针对不同的JAVA参数类型采用相应的转换规则进行转换,获得转换后的JAVA对象;
封装模块,用于将所有JAVA对象封装成符合标准数据交换格式的参数列表,
调用模块,用于使用参数列表调用Dubbo远程服务接口。
其中,
设置针对不同JAVA参数类型的设置规则包括以下方式中的至少一种:
方式一,JAVA参数类型是JAVA基本类型,或者,是JAVA对象类型时,设置规则包括:设置参数名称,设置参数的基本类型类名,设置参数值;
JAVA基本类型包括boolean,char,byte,short,int,long,float,double,JAVA基本对象类型包括:Boolean,Character,Byte,Short,Integer,Long,Float,Double和String;
方式二,JAVA参数类型是JAVA基本类型的数组类型,或者,是JAVA基本对象类型的数组类型时,设置规则包括:设置参数名称,设置用于表示数组对象类型的数组类名,设置数组对象中的每条记录值;
JAVA基本类型的数组类型包括:boolean[],char[],byte[],short[],int[],long[],float[],double[],JAVA基本对象类型的数组类型包括:Boolean[],Character[],Byte[],Short[],Integer[],Long[],Float[],Double[]和String[];
方式三,JAVA参数类型是JAVA非基本对象类型(例如POJO对象类型)时,设置规则包括:设置参数名称,设置用于表示JAVA对象的类名,设置JAVA对象中每个属性的键值对;
方式四,JAVA参数类型是JAVA集合类的List列表类型或Set集对象类型时,设置规则包括:设置参数名称,设置用于表示该集合类型List或Set集对象的类名,设置List列表类型或Set集对象类型中所有记录值序列;
方式五,JAVA参数类型是JAVA集合类的Map映射对象类型时,设置规则包括:设置参数名称,设置用于表示Map映射对象类型的类名,设置Map映射对象中每条记录的键值对;
方式六,输入参数的类型是JAVA日期类型或JAVA时间类型时,设置规则包括:设置参数名称,设置用于表示JAVA日期或时间的类名,设置参数值,设置解析参数值的日期或时间的格式值。
JAVA参数类型是JAVA基本类型中的boolean、int或double类型时,或者JAVA参数类型是String对象类型时,设置规则包括:设置参数名称,设置参数值。
JAVA参数类型是JAVA基本类型,或者,是JAVA基本类型的对象类型时,或者,是String对象类型时,转换规则是:通过类名进行JAVA参数类型匹配,确定参数值是否是空,如果为空,则设置为默认值,如果不为空,执行基础转换规则,基础转换规则为:参数值是数字对象时通过数字对象获取相应的基本类型值,参数值不是数字对象时通过相应基本类型对象来解析参数值;
JAVA参数类型是JAVA基本类型的数组对象,或者,是JAVA基本类型对象的数组对象类型时,转换规则是:通过类名来确定是否为数组,并通过数组类型映射表匹配数组类型,对数组中的值序列分别执行基础转换规则,组装成该类型的数组对象;
JAVA参数类型是简单的JAVA对象类型时,转换规则是:通过类名确定为简单的JAVA对象时,分别对对象的每个属性值执行基础转换规则;
JAVA参数类型是JAVA集合类的List列表或Set集类型时,转换规则是:通过类名来确定为集合类时,对List列表或Set集对象中的值序列分别进行执行基础转换规则,最后再组装成List列表或Set集对象;
JAVA参数类型是JAVA集合类的Map映射类型时,转换规则是:首先通过类名来确定为映射类时,对Map映射类型对象中的键值对分别执行基础转换规则,最后再组装成相应的Map对象;
JAVA参数类型是JAVA日期或时间类型时,转换规则是:通过类名进行日期或时间对象的类型匹配,确定是否设置日期或时间格式,如果设置,则采用该日期或时间格式值对参数值进行解析和格式化;如果未设置,则采用相应的日期或时间对象类来进行默认的解析参数值。
本装置还包括结果统一模块,用于在Dubbo远程服务接口的返回结果为具体值时,将此具体值作为调用结果,在Dubbo远程服务接口的返回结果为对象时,使用对象JSON序列化技术将对象序列化成相应的JSON串作为调用结果。
下面通过具体实施例说明本发明。
具体实施例:
原Dubbo服务有如下三个接口方法:
由于参数类型、参数个数,参数对象都与业务紧密相关,现有技术中的方式针对不同的业务背景,每个接口方法的调用都需要单独实现与自身接口方法的业务紧密相关的一套代码来处理,针对不同的Java类型或对象的输入参数设置和输出参数,复杂度由此可见,势必增大开发人员的开发与后期维护成本。
本实施例中选用标准的JSON来统一输入参数和输出参数,并对远程服务接口的调用进行封装,开发人员在使用过程中,只需要了解服务接口规范,即可通过可配置的方式来处理输入参数,并调用该发明实现好的封装程序来进行远程调用,比如参数配置:
1)第一个服务接口的输入参数的JSON配置,即为参数名字和参数值的键值对:
如果参数为Java的三种基本类型的int,double,boolean和String对象,则可采用以上的简省格式配置,即参数名字与参数值的键值对,而无需额外的其他字段。这是由于JSON基本数据类型(string,number,boolean)的限制,所以只支持Java的这三种基本类型和一种String对象类型。
2)对于第二种Map类型的服务接口,参数的配置需指定class字段指明Map类型以及参数名字name和map内的每条记录的键值key/value对:
本发明的优点包括:
1)无需依赖服务接口,实现与服务依赖的解耦。
2)通过统一标准化的配置,来设置Dubbo服务相应的输入参数,该发明的将参数的解析和映射以及类型转换进行了相应的封装,使用过程中不需要任何额外的编码操作。
3)针对具体业务相关的服务接口所返回数据对象的不确定性,并需要通过编码来实现具体业务返回数据的解析和抽取工作,通过该发明实现了输出结果的统一化和标准化。
4)由于输入输出参数皆使用现有标准格式,比如JSON或XML,任何第三方服务的输出均可作为该输入参数,输出结果也可直接提供给其他支持JSON或XML输入的应用程序使用,从而简化了服务接口调用的难度,避免了对服务接口业务的强依赖性。
5)Dubbo技术是基于Java语言的远程服务框架,该发明实现了与Java语言的解耦,无需Java语言基础也可以使用Dubbo,大大的降低了使用难度,从而使开发人员更多的关注于业务,无需关注具体的某种编程开发语言,旨在“专注业务,弱化编程”。
上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。
以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种智能调用Dubbo远程服务的方法,其特征在于,包括:
设置针对不同JAVA参数类型的设置规则和转换规则;
使用标准数据交换格式对Dubbo远程服务接口的参数进行参数配置,根据设置规则设置相应JAVA参数类型的参数,将所述参数配置的具体内容解析为以JAVA参数类型为单元的数据,针对不同的JAVA参数类型采用相应的转换规则进行转换,获得转换后的JAVA对象,将所有JAVA对象封装成符合所述标准数据交换格式的参数列表,使用所述参数列表调用所述Dubbo远程服务接口。
2.如权利要求1所述的智能调用Dubbo远程服务的方法,其特征在于,
设置针对不同JAVA参数类型的设置规则包括以下方式中的至少一种:
方式一,JAVA参数类型是JAVA基本类型,或者,是JAVA对象类型时,设置规则包括:设置参数名称,设置参数的基本类型类名,设置参数值;
JAVA基本类型包括boolean,char,byte,short,int,long,float,double,JAVA基本对象类型包括:Boolean,Character,Byte,Short,Integer,Long,Float,Double和String;
方式二,JAVA参数类型是JAVA基本类型的数组类型,或者,是JAVA基本对象类型的数组类型时,设置规则包括:设置参数名称,设置用于表示数组对象类型的数组类名,设置数组对象中的每条记录值;
JAVA基本类型的数组类型包括:boolean[],char[],byte[],short[],int[],long[],float[],double[],JAVA基本对象类型的数组类型包括:Boolean[],Character[],Byte[],Short[],Integer[],Long[],Float[],Double[]和String[];
方式三,JAVA参数类型是JAVA非基本对象类型时,设置规则包括:设置参数名称,设置用于表示JAVA对象的类名,设置JAVA对象中每个属性的键值对;
方式四,JAVA参数类型是JAVA集合类的List列表类型或Set集对象类型时,设置规则包括:设置参数名称,设置用于表示该集合类型List或Set集对象的类名,设置List列表类型或Set集对象类型中所有记录值序列;
方式五,JAVA参数类型是JAVA集合类的Map映射对象类型时,设置规则包括:设置参数名称,设置用于表示Map映射对象类型的类名,设置Map映射对象中每条记录的键值对;
方式六,输入参数的类型是JAVA日期类型或JAVA时间类型时,设置规则包括:设置参数名称,设置用于表示JAVA日期或时间的类名,设置参数值,设置解析参数值的日期或时间的格式值。
3.如权利要求1所述的智能调用Dubbo远程服务的方法,其特征在于,
JAVA参数类型是JAVA基本类型中的boolean、int或double类型时,或者JAVA参数类型是String对象类型时,设置规则包括:设置参数名称,设置参数值。
4.如权利要求1所述的智能调用Dubbo远程服务的方法,其特征在于,
JAVA参数类型是JAVA基本类型,或者,是JAVA基本类型的对象类型时,或者,是String对象类型时,转换规则是:通过类名进行JAVA参数类型匹配,确定参数值是否是空,如果为空,则设置为默认值,如果不为空,执行基础转换规则,所述基础转换规则为:参数值是数字对象时通过数字对象获取相应的基本类型值,参数值不是数字对象时通过相应基本类型对象来解析参数值;
JAVA参数类型是JAVA基本类型的数组对象,或者,是JAVA基本类型对象的数组对象类型时,转换规则是:通过类名来确定是否为数组,并通过数组类型映射表匹配数组类型,对数组中的值序列分别执行所述基础转换规则,组装成该类型的数组对象;
JAVA参数类型是简单的JAVA对象类型时,转换规则是:通过类名确定为简单的JAVA对象时,分别对对象的每个属性值执行所述基础转换规则;
JAVA参数类型是JAVA集合类的List列表或Set集类型时,转换规则是:通过类名来确定为集合类时,对List列表或Set集对象中的值序列分别进行执行所述基础转换规则,最后再组装成List列表或Set集对象;
JAVA参数类型是JAVA集合类的Map映射类型时,转换规则是:首先通过类名来确定为映射类时,对Map映射类型对象中的键值对分别执行所述基础转换规则,最后再组装成相应的Map对象;
JAVA参数类型是JAVA日期或时间类型时,转换规则是:通过类名进行日期或时间对象的类型匹配,确定是否设置日期或时间格式,如果设置,则采用该日期或时间格式值对参数值进行解析和格式化;如果未设置,则采用相应的日期或时间对象类来进行默认的解析参数值。
5.如权利要求1所述的智能调用Dubbo远程服务的方法,其特征在于,
所述方法还包括:所述Dubbo远程服务接口的返回结果为具体值时,将此具体值作为调用结果,所述Dubbo远程服务接口的返回结果为对象时,使用对象JSON序列化技术将对象序列化成相应的JSON串作为调用结果。
6.一种智能调用Dubbo远程服务的装置,其特征在于,包括:
设置模块,用于设置针对不同JAVA参数类型的设置规则和转换规则;
配置模块,用于使用标准数据交换格式对Dubbo远程服务接口的参数进行参数配置,根据设置规则设置相应JAVA参数类型的参数;
解析模块,用于将所述参数配置的具体内容解析为以JAVA参数类型为单元的数据;
转换模块,用于针对不同的JAVA参数类型采用相应的转换规则进行转换,获得转换后的JAVA对象;
封装模块,用于将所有JAVA对象封装成符合所述标准数据交换格式的参数列表,
调用模块,用于使用所述参数列表调用所述Dubbo远程服务接口。
7.如权利要求6所述的智能调用Dubbo远程服务的装置,其特征在于,
设置针对不同JAVA参数类型的设置规则包括以下方式中的至少一种:
方式一,JAVA参数类型是JAVA基本类型,或者,是JAVA对象类型时,设置规则包括:设置参数名称,设置参数的基本类型类名,设置参数值;
JAVA基本类型包括boolean,char,byte,short,int,long,float,double,JAVA基本对象类型包括:Boolean,Character,Byte,Short,Integer,Long,Float,Double和String;
方式二,JAVA参数类型是JAVA基本类型的数组类型,或者,是JAVA基本对象类型的数组类型时,设置规则包括:设置参数名称,设置用于表示数组对象类型的数组类名,设置数组对象中的每条记录值;
JAVA基本类型的数组类型包括:boolean[],char[],byte[],short[],int[],long[],float[],double[],JAVA基本对象类型的数组类型包括:Boolean[],Character[],Byte[],Short[],Integer[],Long[],Float[],Double[]和String[];
方式三,JAVA参数类型是JAVA非基本对象类型时,设置规则包括:设置参数名称,设置用于表示JAVA对象的类名,设置JAVA对象中每个属性的键值对;
方式四,JAVA参数类型是JAVA集合类的List列表类型或Set集对象类型时,设置规则包括:设置参数名称,设置用于表示该集合类型List或Set集对象的类名,设置List列表类型或Set集对象类型中所有记录值序列;
方式五,JAVA参数类型是JAVA集合类的Map映射对象类型时,设置规则包括:设置参数名称,设置用于表示Map映射对象类型的类名,设置Map映射对象中每条记录的键值对;
方式六,输入参数的类型是JAVA日期类型或JAVA时间类型时,设置规则包括:设置参数名称,设置用于表示JAVA日期或时间的类名,设置参数值,设置解析参数值的日期或时间的格式值。
8.如权利要求6所述的智能调用Dubbo远程服务的装置,其特征在于,
JAVA参数类型是JAVA基本类型中的boolean、int或double类型时,或者JAVA参数类型是String对象类型时,设置规则包括:设置参数名称,设置参数值。
9.如权利要求6所述的智能调用Dubbo远程服务的装置,其特征在于,
JAVA参数类型是JAVA基本类型,或者,是JAVA基本类型的对象类型时,或者,是String对象类型时,转换规则是:通过类名进行JAVA参数类型匹配,确定参数值是否是空,如果为空,则设置为默认值,如果不为空,执行基础转换规则,所述基础转换规则为:参数值是数字对象时通过数字对象获取相应的基本类型值,参数值不是数字对象时通过相应基本类型对象来解析参数值;
JAVA参数类型是JAVA基本类型的数组对象,或者,是JAVA基本类型对象的数组对象类型时,转换规则是:通过类名来确定是否为数组,并通过数组类型映射表匹配数组类型,对数组中的值序列分别执行所述基础转换规则,组装成该类型的数组对象;
JAVA参数类型是简单的JAVA对象类型时,转换规则是:通过类名确定为简单的JAVA对象时,分别对对象的每个属性值执行所述基础转换规则;
JAVA参数类型是JAVA集合类的List列表或Set集类型时,转换规则是:通过类名来确定为集合类时,对List列表或Set集对象中的值序列分别进行执行所述基础转换规则,最后再组装成List列表或Set集对象;
JAVA参数类型是JAVA集合类的Map映射类型时,转换规则是:首先通过类名来确定为映射类时,对Map映射类型对象中的键值对分别执行所述基础转换规则,最后再组装成相应的Map对象;
JAVA参数类型是JAVA日期或时间类型时,转换规则是:通过类名进行日期或时间对象的类型匹配,确定是否设置日期或时间格式,如果设置,则采用该日期或时间格式值对参数值进行解析和格式化;如果未设置,则采用相应的日期或时间对象类来进行默认的解析参数值。
10.如权利要求6所述的智能调用Dubbo远程服务的装置,其特征在于,所述装置还包括结果统一模块,用于在所述Dubbo远程服务接口的返回结果为具体值时,将此具体值作为调用结果,在所述Dubbo远程服务接口的返回结果为对象时,使用对象JSON序列化技术将对象序列化成相应的JSON串作为调用结果。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811076788.9A CN109298954B (zh) | 2018-09-14 | 2018-09-14 | 一种智能调用Dubbo远程服务的方法及装置 |
PCT/CN2019/105325 WO2020052582A1 (zh) | 2018-09-14 | 2019-09-11 | 一种智能调用Dubbo远程服务的方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811076788.9A CN109298954B (zh) | 2018-09-14 | 2018-09-14 | 一种智能调用Dubbo远程服务的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109298954A CN109298954A (zh) | 2019-02-01 |
CN109298954B true CN109298954B (zh) | 2019-10-25 |
Family
ID=65163211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811076788.9A Active CN109298954B (zh) | 2018-09-14 | 2018-09-14 | 一种智能调用Dubbo远程服务的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109298954B (zh) |
WO (1) | WO2020052582A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109298954B (zh) * | 2018-09-14 | 2019-10-25 | 北京数聚鑫云信息技术有限公司 | 一种智能调用Dubbo远程服务的方法及装置 |
CN111756779B (zh) * | 2019-03-26 | 2022-07-26 | 阿里巴巴集团控股有限公司 | 数据序列化处理方法、装置及计算机系统 |
CN112084046B (zh) * | 2020-09-12 | 2021-12-21 | 深圳市艾可思信息技术有限公司 | 一种分布式计算中泛化接口调用方法及装置 |
CN112333270B (zh) * | 2020-11-04 | 2024-05-03 | 中国电力财务有限公司 | 一种微服务动态路由的方法及系统 |
CN114116067B (zh) * | 2021-12-02 | 2024-02-27 | 多点生活(武汉)科技有限公司 | 内外系统的信息配置方法、装置、电子设备和可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216760A (zh) * | 2007-12-28 | 2008-07-09 | 北京方正国际软件系统有限公司 | 一种动态映射接口调用系统及方法 |
CN101697139B (zh) * | 2009-11-06 | 2013-04-17 | 金蝶软件(中国)有限公司 | 一种远程过程调用方法、装置和注册库 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136095A (zh) * | 2011-11-28 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 一种测试应用程序接口的方法、装置及系统 |
CN103391294A (zh) * | 2013-07-24 | 2013-11-13 | 佳都新太科技股份有限公司 | 一种基于服务描述的远程方法调用 |
US9448770B2 (en) * | 2014-12-29 | 2016-09-20 | Sap Se | Source code editor |
CN105068854B (zh) * | 2015-08-07 | 2018-04-06 | 杭州古北电子科技有限公司 | 一种使用相同规则实现对不同产品的控制的方法 |
CN105117938A (zh) * | 2015-08-19 | 2015-12-02 | 江苏农牧人电子商务股份有限公司 | 一种基于模型视图控制器的电商构架请求数据分析方法 |
CN105787128B (zh) * | 2016-03-29 | 2019-04-23 | 四川秘无痕信息安全技术有限责任公司 | 一种恢复Java序列化文件数据的方法 |
CN106411933B (zh) * | 2016-11-15 | 2019-09-10 | 深圳市彬讯科技有限公司 | 一种可进行服务治理与语言调用的轻量级rpc系统 |
CN107229474B (zh) * | 2017-05-31 | 2020-12-25 | 成都药王科技股份有限公司 | 基于可视化界面快速配置Java接口和图表服务的方法及装置 |
CN107908541B (zh) * | 2017-07-26 | 2020-10-30 | 平安壹钱包电子商务有限公司 | 接口测试方法、装置、计算机设备及存储介质 |
CN108255615B (zh) * | 2017-11-30 | 2022-03-01 | 平安科技(深圳)有限公司 | 跨语言调用方法、服务器及存储介质 |
CN109298954B (zh) * | 2018-09-14 | 2019-10-25 | 北京数聚鑫云信息技术有限公司 | 一种智能调用Dubbo远程服务的方法及装置 |
-
2018
- 2018-09-14 CN CN201811076788.9A patent/CN109298954B/zh active Active
-
2019
- 2019-09-11 WO PCT/CN2019/105325 patent/WO2020052582A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216760A (zh) * | 2007-12-28 | 2008-07-09 | 北京方正国际软件系统有限公司 | 一种动态映射接口调用系统及方法 |
CN101697139B (zh) * | 2009-11-06 | 2013-04-17 | 金蝶软件(中国)有限公司 | 一种远程过程调用方法、装置和注册库 |
Also Published As
Publication number | Publication date |
---|---|
WO2020052582A1 (zh) | 2020-03-19 |
CN109298954A (zh) | 2019-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109298954B (zh) | 一种智能调用Dubbo远程服务的方法及装置 | |
KR100583517B1 (ko) | 소프트웨어 객체와 구조화 언어 요소 기반 문서간의 매핑시스템 및 방법 | |
US20060080336A1 (en) | Encapsulation and unified access scheme for components | |
US7089533B2 (en) | Method and system for mapping between markup language document and an object model | |
US11842231B2 (en) | Cloud-based API metadata management method and system for integrated API management | |
US7237194B2 (en) | System and method for generating optimized binary representation of an object tree | |
WO2003009517A2 (en) | Generate customized xml mapping conversion code | |
CN113703862B (zh) | 基于配置的接口调用方法、装置、设备及存储介质 | |
CN108664546B (zh) | Xml数据结构转换方法和装置 | |
CN111324619A (zh) | 微服务系统中的对象更新方法、装置、设备和存储介质 | |
CN112083919A (zh) | 一种基于yaml模板的目标服务代码生成方法及装置 | |
CN113434175A (zh) | 数据处理方法、装置、存储介质及设备 | |
CN114611500A (zh) | 表达式处理方法、装置、电子设备及计算机可读存储介质 | |
CN111552839B (zh) | 一种基于xml模板的对象转换方法 | |
KR100762712B1 (ko) | 규칙기반의 전자문서 변환방법 및 그 시스템 | |
US7716675B2 (en) | Cross-reference service | |
CN113342399B (zh) | 应用项目的结构配置方法、装置及可读存储介质 | |
US7243341B2 (en) | Scripting language for processing typed structured data | |
CN111222015A (zh) | 一种异构xml映射生成文档方法 | |
Troschütz | Web Service Test Framework with TTCN-3 | |
CN115268924B (zh) | 一种基于aPaaS平台的公式计算引擎服务方法及系统 | |
CN111310414B (zh) | Rdf格式文件的解析方法及生成方法 | |
CN117435177B (zh) | 应用程序接口构建方法、系统、设备及存储介质 | |
CN114115828A (zh) | 一种嵌入式构件实体生成方法及装置 | |
CN114417448A (zh) | 一种基于物联网的数据标准模型设计系统及方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |