java impliments,dubbo使用GenericService泛化调用

我们项目中常见场景,java应用内部接口都是使用dubbo,某个非java应用需要调用我们的接口的时候,无法使用dubbo,这是我们需要给它提供其他形式的接口,如restful api等等,这时我们需要为这个接口开发而增加额外的工作量。这时候就可以使用dubbo提供的GenericService来调用dubbo接口了,而使用GenericService调用接口的好处是不需要依赖服务提供方给的interface,只需要知道接口的全类名,方法名,参数列表就能调用dubbo方法,拿到返回值,这种调用称为泛化调用。

我们先看看GenericService里面的方法只有一个$invoke;

package com.alibaba.dubbo.rpc.service;

public abstract interface GenericService

{

public abstract Object $invoke(String paramString, String[] paramArrayOfString, Object[] paramArrayOfObject)

throws GenericException;

}

具体的使用方法如下:

我们先定义接口和实现:

public interface TestService{

public String test1(String arg);

}

public class TestServiceImpl impliments TestService{

public String test1(String arg){

return "TestService.test:" + arg;

}

}

泛化调用的使用GenericService方法如下:

ApplicationConfig application = new ApplicationConfig("test-generic-dubbo");//参数为dubbo消费方的名称

ReferenceConfigreference = new ReferenceConfig();

application.setRegistry(dubboPropperties.getRegistry());//注册中心的配置,这个我们可以在spring的bean中拿到dubboProperties,全类名为:io.dubbo.springboot.DubboProperties

reference.setApplication(application);

reference.setInterface(“com.xxx.TestService”);//dubbo接口的全类名

reference.setGroup("my-group");//dubbo的group

reference.setVersion("1.0.0");//dubbo的版本号

reference.setTimeout(3000);//dubbo调用的超时时间 单位:ms

reference.setGeneric(true);//是否支持泛化调用,我们这里肯定要设置为true

GenericService genericService = reference.get();//获取genericService

Obect object = genericService.$invoke("test1",{"java.lang.String"},{"hello"});//调用泛化接口

System.out.println(object);//返回接口输出为:TestService.test:hello

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Eclipse 创建 搭建SpringBoot项目

之前用IDEA 创建Springboot 项目感觉十分简单,但是常用的毕竟是Eclipse 所以开一个帖子记录一下Eclipse 如何创建 Springboot 项目 第一步:Help -> Eclipse Marketplace… 在search 中输入 STS install 即可! 第二部:new -&g…

static函数与普通函数区别

全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件…

zendguard php5.4,ZendGuardLoader6.0.0支持PHP5.4.x系列

不知不觉,现在Zend Guard Loader发布了6.0.0版本,支持PHP 5.4.x系列。官方地址:http://www.zend.com/en/products/guard/downloads (需要注册用户后下载)这里提供下常用的版本Windows:附件:ZendGuardLoader-70429-PHP-…

camel mq_Camel:构建基于消息的应用程序

camel mq这是一篇长文章,包含三个单独的主题: Java的Apache Camel入门 使用CamelRunner改善路线的启动 使用Camel构建基于消息的应用程序 但是,由于我准备了包含所有这些材料的camel-demo-1.0.0-SNAPSHOT-project.zip ,因此我认…

what??|诞生才一年的BCH竟面临硬分叉的抉择

BCH才刚过一周岁生日一个星期,BCH社区的主力之一Bitcoin ABC(BCH全网接近三分之二节点运行的软件系统由Bitcoin ABC开发)就搅动了社区的涟漪。8月8号,Bitcoin ABC公布了自己的路线图提出修改BCH的共识协议。而BCH社区的大V之一Cra…

改变div php,JS改变DIV样式

摘要:var boxwindow.οnlοadfunction(){box document.getElementById("box")}function aa(){box.style.height "400px"}function bb(){box.style.width "400px"}function cc(){box.style.backgroundColor "blue"}批改老…

switch变量的作用 域问题

&#xfeff;&#xfeff;switch是我们做条件选择时&#xff0c;经常用到的一个语句。一直以来对于他的使用相信大家也都是得心应手&#xff0c;前几天在linux下写一个c程序时遇到了这样的一个问题&#xff0c;请看例子&#xff1a;#include<iostream>using namespace st…

返回CompletableFuture:Java 8功能亮点

CompletableFuture与未来&#xff1a;与Java 8新功能保持异步 Java 8于2014年3月发布&#xff0c;并附带了许多新功能。 鲜为人知的&#xff0c;极为有用却被人误解的功能之一是对Future接口的全新改进&#xff0c;即扩展&#xff1a;CompletableFuture <T>。 在下面的…

php 操作 mysql 数据库常用方法集合

参考&#xff1a; https://www.runoob.com/php/php-pdo.html https://www.cnblogs.com/feng18/p/6523646.html https://blog.csdn.net/zuiliannvshen/article/details/78247244 转载于:https://www.cnblogs.com/gavinyyb/p/9543844.html

接口功能测试策略

由于平台服务器是通过接口来与客户端交互数据提供各种服务&#xff0c;因此服务器测试工作首先需要进行的是接口测试工作。测试人员需要通过服务器接口功能测试来确保接口功能实现正确&#xff0c;那么其他测试人员进行客户端与服务器结合的系统测试过程中&#xff0c;就能够排…

matlab中sort(d),MATLAB中排序函数sort()的用法

MATLAB中排序函数sort()可以对参数的元素进行升序排序或降序排序。具体的用法如下&#xff1a;Ysort(X)sort()的参数可以是向量&#xff0c;矩阵&#xff0c;数组等等。当X是向量时&#xff0c;sort(X)对X的元素进行升序排序&#xff1b;当X是矩阵时&#xff0c;sort(X)对X的每…

cin、cin.get()、cin.getline()、getline()、gets()函数的用法

1、cin>> 用法1&#xff1a;最基本&#xff0c;也是最常用的用法&#xff0c;输入一个数字&#xff1a; #include <iostream> using namespace std; main () { int a,b; cin>>a>>b; cout<<ab<<endl; } 输入&#xff1a;2[回车]3…

BootCDNApi使用记录

通过API获取BootCDN所加速的所有前端开源库的基本信息和文件列表 API 将一下API链接中的.min字样去掉后,获取到的JSON格式的返回信息是经过良好的格式化的,便于查看. 所有开源库简要信息列表 https://api.bootcdn.cn/libraries.min.json 该列表是一个json数组,数组中的每一个条…

spring防止爬虫_Spring安全:防止暴力攻击

spring防止爬虫Spring Security可以为您做很多事情。 帐户被封锁&#xff0c;密码盐。 但是蛮力阻断剂呢&#xff1f; 那是你必须自己做的。 幸运的是&#xff0c;Spring是一个非常灵活的框架&#xff0c;因此对其进行配置并不是什么大问题。 让我向您展示一些如何针对Grai…

php 输出读取结果集,php获取数据库结果集实例详解

下面小编就为大家带来一篇php获取数据库结果集方法(推荐)。小编觉得挺不错的&#xff0c;现在就分享给大家&#xff0c;也给大家做个参考。一起跟随小编过来看看吧PHP经常要访问数据库提前数据库里面的数据&#xff0c;那么该怎么样去提前数据呢&#xff1f;提取数据库代码如下…

c/c++ 模板与STL小例子系列一 自建Array数组

c/c 模板与STL小例子系列 自建Array数组 自建的Array数组&#xff0c;提供如下对外接口 方法功能描述Array()无参数构造方法&#xff0c;构造元素个数为模板参数个的数组Array(int length)有参数构造方法&#xff0c;构造元素个数为参数length个的数组~Array()析构函数int size…

php如何抓取一行的内容,提取一行作为对象 - PHP 7 中文文档

(PHP 4, PHP 5, PHP 7)pg_fetch_object – 提取一行作为对象说明pg_fetch_object( resource $result[, int $row[, int $result_type]] ) : objectpg_fetch_object() 返回与所提取行的属性相一致的一个对象。如果出错或者没有更多行可供提取时则返回 FALSE。pg_fetch_object() …

Spring Cloud Zuul支持–配置超时

Spring Cloud为Netflix Zuul提供了支持 -Netflix Zuul是用于创建具有路由和过滤功能的边缘服务的工具包。 在Spring Cloud站点上非常全面地记录了Zuul代理支持。 我的目标是关注与代理服务处理超时有关的一小部分属性。 目标服务和网关 为了更好地研究超时&#xff0c;我创建…

NYOJ 113

字符串替换 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB 难度&#xff1a;2描述 编写一个程序实现将字符串中的所有"you"替换成"we" 输入输入包含多行数据 每行数据是一个字符串&#xff0c;长度不超过1000 数据以EOF结束输出对于输入的…

java 多表格处理工具,表单工具十一大标准

现在市场上的表单工具百家争鸣&#xff0c;鱼目混杂。到底什么时候能解决客户问题表单&#xff0c;今天我们主要从客户角度来真正表单工具的十大标准&#xff1a;1) 零编码制作表单业务人员通过高效灵活的设计器&#xff0c;可以自由定制符合自己业务逻辑的表单&#xff0c;同时…