Dubbo剖析-服务消费方Invoker到客户端接口的转换

一、前言

前面dubbo整体架构分析里面我们讲解了服务消费者消费一个服务的详细过程是,首先 调用 Protocol 的 refer 方法生成 Invoker 实例,接下来把Invoker 转换为客户端需要的接口(如:UserServiceBo),本文来讲解第二个环节的实现

image.png

二、Invoker到客户端接口的转换

Invoker到客户端接口的转换是下面代码完成的:

image.png

其中proxyFactory是代理类的扩展接口,默认情况下这里调用getProxy返回的spi扩展实现类是JavassistProxyFactory,也就是这里是调用了JavassistProxyFactory的getProxy方法,getProxy代码如下:

image.png

该代码的作用是对接口interfaces进行代理,并使用InvokerInvocationHandler对具体调用进行拦截。InvokerInvocationHandler中的invoker就是服务消费方远程服务到Invoker转换的invoker。

三、总结

服务消费方远程服务到Invoker的转换,是通过 ReferenceConfig 类的 init 方法调用 Protocol 的 refer 方法生成 Invoker 实例,这是服务消费的关键。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java编程技术

Dubbo剖析-服务提供方Invoker到Exporter的转换

前面dubbo整体架构分析里面我们讲解了服务提供者暴露一个服务的详细过程是,首先具体服务的实现类转换为了Invoker对象,然后Invoker在转换为Expor...

1253
来自专栏IT笔记

Ehcache中timeToLiveSeconds和timeToIdleSeconds的区别

项目中配置如下: <?xml version="1.0" encoding="UTF-8"?> <ehcache updateCheck="false" nam...

3144
来自专栏以南小隐-数通那些事儿

EVE-NG-PRO导入Dynamips镜像《EVE-NG系列教程二》

2.4K4
来自专栏河湾欢儿的专栏

grunt

npm install -g grunt-cli //全局安装grunt npm init -y //初始化package.json npm ins...

1241
来自专栏刘远飞的专栏

Apache 性能配置优化

最近在进行apache性能优化设置。在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯。本文讲述的apache配置调优均是在r...

2.7K0
来自专栏Java开发

Linux 查看网卡UUID

3312
来自专栏Java技术分享

MongoDB基础语句

闺蜜苏苏工作是前端开发,她竟然被要求用到MongoDB数据库,所以先让她安装好先,再来测试下面语句~ MongoDB数据库安装地址:http://jingya...

2198
来自专栏Android群英传

创建后台任务的两种代码模式

871
来自专栏流柯技术学院

jmeter connection reset解决方法

1.修改HTTP请求下面的Impementation选项,改成HttpClient4

4412
来自专栏吾爱乐享

软件测试之Jmeter环境搭建及安装

1494

扫码关注云+社区

领取腾讯云代金券