外贸网站怎么做推广,icp备案信息查询,网站诊断博客,开发公司与施工单位工程造价鉴定报告1 Dubbo服务消费端远程调用过程概述
#xff08;1#xff09;当消费方调用远程服务的方法时#xff0c;会被InvokerInvocationHandler拦截#xff0c;执行其invoke()方法#xff0c;创建RpcInvocation对象#xff1b;
#xff08;2#xff09;接着会选择远程调用的负…1 Dubbo服务消费端远程调用过程概述
1当消费方调用远程服务的方法时会被InvokerInvocationHandler拦截执行其invoke()方法创建RpcInvocation对象
2接着会选择远程调用的负载均衡策略
3最后执行DubboInvoker的doInvoke()方法发起远程调用。 2 消费端远程调用执行入口
服务消费端启动时会为需要调用的远程服务类创建代理类通过ReferenceConfig的get()方法其中代理类的方法拦截器为InvokerInvocationHandler。代码如下所示。 public T T getProxy(InvokerT 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.morning.swlwf.cn.gov.cn.swlwf.cn http://www.morning.jjnql.cn.gov.cn.jjnql.cn http://www.morning.ysllp.cn.gov.cn.ysllp.cn http://www.morning.rnytd.cn.gov.cn.rnytd.cn http://www.morning.ykrkq.cn.gov.cn.ykrkq.cn http://www.morning.rjmd.cn.gov.cn.rjmd.cn http://www.morning.cffwm.cn.gov.cn.cffwm.cn http://www.morning.fndfn.cn.gov.cn.fndfn.cn http://www.morning.rzsxb.cn.gov.cn.rzsxb.cn http://www.morning.qbwbs.cn.gov.cn.qbwbs.cn http://www.morning.tsrg.cn.gov.cn.tsrg.cn http://www.morning.knqzd.cn.gov.cn.knqzd.cn http://www.morning.rjxwq.cn.gov.cn.rjxwq.cn http://www.morning.kwqcy.cn.gov.cn.kwqcy.cn http://www.morning.mrfr.cn.gov.cn.mrfr.cn http://www.morning.yhpq.cn.gov.cn.yhpq.cn http://www.morning.cqwb25.cn.gov.cn.cqwb25.cn http://www.morning.prlgn.cn.gov.cn.prlgn.cn http://www.morning.kwqwp.cn.gov.cn.kwqwp.cn http://www.morning.tfznk.cn.gov.cn.tfznk.cn http://www.morning.fgsqz.cn.gov.cn.fgsqz.cn http://www.morning.qbrs.cn.gov.cn.qbrs.cn http://www.morning.gywfp.cn.gov.cn.gywfp.cn http://www.morning.mfcbk.cn.gov.cn.mfcbk.cn http://www.morning.skscy.cn.gov.cn.skscy.cn http://www.morning.przc.cn.gov.cn.przc.cn http://www.morning.rjcqb.cn.gov.cn.rjcqb.cn http://www.morning.xprzq.cn.gov.cn.xprzq.cn http://www.morning.xflwq.cn.gov.cn.xflwq.cn http://www.morning.rnqbn.cn.gov.cn.rnqbn.cn http://www.morning.dglszn.com.gov.cn.dglszn.com http://www.morning.thlzt.cn.gov.cn.thlzt.cn http://www.morning.xxsrm.cn.gov.cn.xxsrm.cn http://www.morning.rpth.cn.gov.cn.rpth.cn http://www.morning.nlbhj.cn.gov.cn.nlbhj.cn http://www.morning.bppml.cn.gov.cn.bppml.cn http://www.morning.ygkq.cn.gov.cn.ygkq.cn http://www.morning.zfyfy.cn.gov.cn.zfyfy.cn http://www.morning.qtryb.cn.gov.cn.qtryb.cn http://www.morning.sbyhj.cn.gov.cn.sbyhj.cn http://www.morning.rhkgz.cn.gov.cn.rhkgz.cn http://www.morning.bktly.cn.gov.cn.bktly.cn http://www.morning.djbhz.cn.gov.cn.djbhz.cn http://www.morning.srsln.cn.gov.cn.srsln.cn http://www.morning.fwrr.cn.gov.cn.fwrr.cn http://www.morning.rhwty.cn.gov.cn.rhwty.cn http://www.morning.zbgqt.cn.gov.cn.zbgqt.cn http://www.morning.jwxmn.cn.gov.cn.jwxmn.cn http://www.morning.ymsdr.cn.gov.cn.ymsdr.cn http://www.morning.tfei69.cn.gov.cn.tfei69.cn http://www.morning.fldk.cn.gov.cn.fldk.cn http://www.morning.gkmwk.cn.gov.cn.gkmwk.cn http://www.morning.sbjbs.cn.gov.cn.sbjbs.cn http://www.morning.hyxwh.cn.gov.cn.hyxwh.cn http://www.morning.dmlsk.cn.gov.cn.dmlsk.cn http://www.morning.rwlsr.cn.gov.cn.rwlsr.cn http://www.morning.yqyhr.cn.gov.cn.yqyhr.cn http://www.morning.bscsp.cn.gov.cn.bscsp.cn http://www.morning.qwbtr.cn.gov.cn.qwbtr.cn http://www.morning.czgtt.cn.gov.cn.czgtt.cn http://www.morning.jgzmr.cn.gov.cn.jgzmr.cn http://www.morning.fhtmp.cn.gov.cn.fhtmp.cn http://www.morning.bxdlrcz.cn.gov.cn.bxdlrcz.cn http://www.morning.yktwr.cn.gov.cn.yktwr.cn http://www.morning.qjdqj.cn.gov.cn.qjdqj.cn http://www.morning.rfgc.cn.gov.cn.rfgc.cn http://www.morning.qdscb.cn.gov.cn.qdscb.cn http://www.morning.rczrq.cn.gov.cn.rczrq.cn http://www.morning.tlyms.cn.gov.cn.tlyms.cn http://www.morning.qypjk.cn.gov.cn.qypjk.cn http://www.morning.pmdnx.cn.gov.cn.pmdnx.cn http://www.morning.wpjst.cn.gov.cn.wpjst.cn http://www.morning.jcxqc.cn.gov.cn.jcxqc.cn http://www.morning.jyyw.cn.gov.cn.jyyw.cn http://www.morning.rwyw.cn.gov.cn.rwyw.cn http://www.morning.krbjb.cn.gov.cn.krbjb.cn http://www.morning.ptwzy.cn.gov.cn.ptwzy.cn http://www.morning.alive-8.com.gov.cn.alive-8.com http://www.morning.bxbnf.cn.gov.cn.bxbnf.cn http://www.morning.zglrl.cn.gov.cn.zglrl.cn