当前位置: 首页 > news >正文

网站开发 营业执照西城网站建设浩森宇特

网站开发 营业执照,西城网站建设浩森宇特,国家卫星互联网系统,手机网站后台管理1 Dubbo服务消费端远程调用过程概述 (1)当消费方调用远程服务的方法时,会被InvokerInvocationHandler拦截,执行其invoke()方法,创建RpcInvocation对象; (2)接着会选择远程调用的负…

1 Dubbo服务消费端远程调用过程概述

(1)当消费方调用远程服务的方法时,会被InvokerInvocationHandler拦截,执行其invoke()方法,创建RpcInvocation对象;

(2)接着会选择远程调用的负载均衡策略;

(3)最后执行DubboInvoker的doInvoke()方法发起远程调用。

2 消费端远程调用执行入口

服务消费端启动时,会为需要调用的远程服务类创建代理类(通过ReferenceConfig的get()方法),其中代理类的方法拦截器为InvokerInvocationHandler。代码如下所示。

    public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {try {return (T) Proxy.getProxy(interfaces).newInstance(new InvokerInvocationHandler(invoker));} catch (Throwable fromJavassist) {// try fall back to JDK proxy factorytry {T proxy = jdkProxyFactory.getProxy(invoker, interfaces);logger.error(PROXY_FAILED, "", "", "Failed to generate proxy by Javassist failed. Fallback to use JDK proxy success. " +"Interfaces: " + Arrays.toString(interfaces), fromJavassist);return proxy;} catch (Throwable fromJdk) {logger.error(PROXY_FAILED, "", "", "Failed to generate proxy by Javassist failed. Fallback to use JDK proxy is also failed. " +"Interfaces: " + Arrays.toString(interfaces) + " Javassist Error.", fromJavassist);logger.error(PROXY_FAILED, "", "", "Failed to generate proxy by Javassist failed. Fallback to use JDK proxy is also failed. " +"Interfaces: " + Arrays.toString(interfaces) + " JDK Error.", fromJdk);throw fromJavassist;}}}

所以,当消费方调用远程服务的方法时,会被InvokerInvocationHandler拦截,执行其invoke()方法。其中method为调用的方法,args为参数。此处创建的RpcInvocation对象会一直传递下去,直到发起远程调用。invoke()方法代码如下所示。

    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {if (method.getDeclaringClass() == Object.class) {return method.invoke(invoker, args);}String methodName = method.getName();Class<?>[] parameterTypes = method.getParameterTypes();if (parameterTypes.length == 0) {if ("toString".equals(methodName)) {return invoker.toString();} else if ("$destroy".equals(methodName)) {invoker.destroy();return null;} else if ("hashCode".equals(methodName)) {return invoker.hashCode();}} else if (parameterTypes.length == 1 && "equals".equals(methodName)) {return invoker.equals(args[0]);}RpcInvocation rpcInvocation = new RpcInvocation(serviceModel, method.getName(), invoker.getInterface().getName(), protocolServiceKey, method.getParameterTypes(), args);if (serviceModel instanceof ConsumerModel) {rpcInvocation.put(Constants.CONSUMER_MODEL, serviceModel);rpcInvocation.put(Constants.METHOD_MODEL, ((ConsumerModel) serviceModel).getMethodModel(method));}return InvocationUtil.invoke(invoker, rpcInvocation);}

http://www.yayakq.cn/news/947301/

相关文章:

  • 网站建设合同验收标准云匠网接单能信吗
  • 苏州网站建设网站优化3合1网站建设价格
  • 做网站备案要多久重庆市做网站的公司
  • 长春建站小程序怎么做成链接
  • 游戏制作流程合肥网站搜索优化
  • 做网站界面需要注意什么做网站要固定ip
  • 做企业专业网站一般要多少钱西安旅游必去景点推荐
  • com网站怎么注册织梦 手机网站
  • 阿里云做网站视频无法播放办公网络建设项目商务要求
  • 网站开发职业生涯规划书石家庄建设项目公示网
  • 阳明拍卖公司网站网络营销方式与工具有哪些
  • 网站备案名称更改高清设计网站推荐
  • 网站开发的公司名称中国商业网官网
  • 哪些公司网站建设好视频网站建设流程
  • 免费flash网站模板带后台微盟商户助手
  • 加强理想信念教育主题网站建设闲置物品交易网站怎么做
  • 绵阳优化网站排名网络系统管理和配置
  • 电商网站更适合百色优惠welcome
  • 品牌网站响应式网站有哪些wordpress的官方文档
  • 个人网站建设方案书范文wordpress宠物模板
  • 烟台网站建设服务在线网站建设平台
  • 网站开发入哪个会计科目下列关于网站开发中
  • 重庆市网站备案微信公众平台注册官网登录入口
  • 重庆网站策划做企业网站国内发展
  • 实现微信绑定登录网站河北省城乡住房建设厅网站
  • 竹子建站教程网站建设运城
  • 下载网站源文件产品营销推广方案
  • 汽车之家如何做团购网站四川网站设计成功柚米科技
  • 网站域名哪里买推广页面制作
  • 云服务器做网站好吗pc网站制作是指什么意思