JSF-provider执行过程

调用端组装好参数后最后会调用jsf client的sendMsg方法

在这里面会把消息体进行编码和序列化默认的序列化方式是msgpack


Netty服务端ServerChannelHandler生成一个任务执行ServerChannelHandler监听到消息体

                    生成一个任务

JSFTask调用doRun方法执行

 

void doRun() {
              
//获取一个执行器
Invoker invoker = this.serverHandler.getOwnInvoker(className, aliasName);
//通过反射执行方法
responseMessage = invoker.invoke(this.msg);
。。。
//序列化和编码
buf = ProtocolUtil.encode(responseMessage, buf);
//将结果回传给客户端
TraceUtils.rpcServerSend(this.msg, responseMessage.getException(), responseSize, isBizException);

    }

 

其中invoker.invoke(this.msg);会调用服务器代理类ProviderProxyInvoker去执行。

ProviderProxyInvoker链式调用过滤器,最后一个过滤器是ProviderInvokeFilter。

ProviderInvokeFilter根据消息体中的接口名称和方法名称通过反射执行代码,并把结果返回给调用者。

图2 生成method对象

 

图3 通过反射执行 获取执行结果

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值