Dubbo-泛化引用
2016-08-06 09:54
260 查看
泛化调用,无需业务接口类进行远程调用,用于测试平台,开放网关桥接等(可用于生产环境)
说明:泛化引用主要是针对服务消费者,服务提供方正常暴露服务即可,无须做任何修改。
用途:泛接口调用方式主要用于客户端没有API接口及模型类元的情况,参数及返回值中的所有POJO均用Map表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过GenericService调用所有服务实现。
好处:无须将model和api暴露出去,服务消费方只需要知道调用的接口名称、方法名、参数、参数类型等等就可以实现远程调用。
简单Demo:
(1)API(在泛化引用的情况下,不暴露给消费者):
(2)服务提供者(接口实现):
(3)在服务消费方配置:
<!-- generic="true" 声明为泛化引用-->
(4)调用(基于SpringMvc):
基本类型以及Date,List,Map等不需要转换,直接调用:
如果是POJO参数
这样就能够在客户端没有API接口及模型类元的情况下远程调用服务。
说明:泛化引用主要是针对服务消费者,服务提供方正常暴露服务即可,无须做任何修改。
用途:泛接口调用方式主要用于客户端没有API接口及模型类元的情况,参数及返回值中的所有POJO均用Map表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过GenericService调用所有服务实现。
好处:无须将model和api暴露出去,服务消费方只需要知道调用的接口名称、方法名、参数、参数类型等等就可以实现远程调用。
简单Demo:
(1)API(在泛化引用的情况下,不暴露给消费者):
public interface IMenusService { public String test(String id); }
(2)服务提供者(接口实现):
public class IndexMenusServiceImpl implements IMenusService { @Override public String test(String id) { return id + "测试"; } }
(3)在服务消费方配置:
<!-- generic="true" 声明为泛化引用-->
<dubbo:reference id="genericService" interface="com.sic777.modules.menus.service.IMenusService" generic="true" />
(4)调用(基于SpringMvc):
基本类型以及Date,List,Map等不需要转换,直接调用:
@Controller @RequestMapping("generic") public class GenericAction { @Resource private GenericService genericService; @ResponseBody @RequestMapping("getGeneric") public String Generic(){ // 基本类型以及Date,List,Map等不需要转换,直接调用 Object result = genericService.$invoke("test", new String[] { "java.lang.String" }, new Object[] { "2" });// 如果返回POJO将自动转成Map return result.toString(); } }
如果是POJO参数
// 用Map表示POJO参数,如果返回值为POJO也将自动转成Map Map<String, Object> menus = new HashMap<String, Object>(); menus.put("menuSeq", "222"); menus.put("menuName", "远程测试"); // 如果返回POJO将自动转成Map Object result = genericService.$invoke("getMenusModel", new String[] { "com.sic777.modules.menus.model.Menus" }, new Object[] { menus });
这样就能够在客户端没有API接口及模型类元的情况下远程调用服务。
相关文章推荐
- Dubbo-admin 不支持JDK8 解决办法
- 对外提供dubbo服务的最佳实践
- 搭建分布式架构2--CentOs下安装Tomcat7(环境准备)
- 搭建分布式架构4--ZooKeeper注册中心安装
- 搭建分布式架构5--ZooKeeper 集群的安装 3ff0
- dubbo-2.5.4-SNAPSHOT 小bug处理。
- Zookeeper注册中心安装
- dubbo + spring + mybaits 的pom文件列一
- dubbo使用简单说明
- Apache Ignite 网格计算 (可用来取代dubbo等分布式RPC)与 spring 整合
- dubbo提供者出现不明外网ip注册的问题
- SpringBoot+Dubbo+Mybatis 项目升级版本(Gradle)
- Dubbo框架学习资料汇总
- Dubbo与Zookeeper、SpringMVC整合和使用
- dubbo管理控制台安装和使用
- 基于开源Dubbo分布式RPC服务框架的部署整合