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

网站期刊怎么做app编辑软件

网站期刊怎么做,app编辑软件,做个简单的导航网站,海尔集团网站是怎么做的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/937764/

相关文章:

  • 网站有关于我们的好处公司建站模版
  • 帝国cms做网站wordpress主题 视频教程
  • 访问一个网站的过程flash做网站轮播图
  • 网站上线前准备方案虚拟主机的概念和功能
  • wordpress子站点404群晖nas建设网站
  • 在阿里巴巴上怎样做网站宠物美容师宠物美容培训学校
  • 大连手机自适应网站制作费用网站全是乱码
  • 蓝田县住房与城乡建设局网站网站开发安全文档
  • 成品网站怎么被百度收录什么样的网站利于优化
  • 本溪建设银行网站企业文化建设的重要性
  • 精品课程网站源码用手机做免费自助网站
  • 企业展示型网站php卫浴洁具公司网站模板
  • 毕业设计做网站答辩会问什么手机软件开发网站
  • 营销加盟网站建设最近的国际新闻
  • 网站seo应用要怎么才能建设一个网站
  • 西安保障性住房建设投资中心网站什么是网站维护费
  • 淮安做网站seowordpress4.9中文版
  • 如何写作网站2021年中国中小企业最新数据
  • 建手机网站教程wordpress网页没法评论
  • 电子商务网站主要功能网站的搜索功能怎么做
  • 哪些cms做同城网站比较好网站建设备案书模板
  • 石家庄网站建设培训班网站信息系统设计
  • 新乡营销型网站建设什么样的人适合做策划
  • 制作一个链接网站大同建设银行煤炭支行网站
  • 音乐建设网站优秀网页设计代码
  • 如何打开网站网页南通网站制作专家
  • 桐庐县网站建设中国价格网
  • 网站做的文字乱码wordpress连接微博免费版
  • 深圳网站设计按天收费品牌型网站
  • 个人网站icp备案云主机租用