騰一部分筆記到csdn
1. 概述
// 推薦
<dubbo:reference scope="local" />
// 不推薦使用,準備廢棄
<dubbo:reference injvm="true" />
<dubbo:reference scope="remote" />
|
2. createProxy
invoker = refprotocol.refer(interfaceClass, url); //獲取invoker
-> return new InjvmInvoker<T>(serviceType, url, url.getServiceKey(), exporterMap);
@Override
public Result doInvoke(Invocation invocation) throws Throwable {
// 獲得 Exporter 對象
Exporter<?> exporter= InjvmProtocol.getExporter(exporterMap, getUrl());
if (exporter == null) {
throw new RpcException("Service ["+ key + "] not found.");
}
// 設置服務提供者地址爲本地
RpcContext.getContext().setRemoteAddress(NetUtils.LOCALHOST, 0);
// 調用
return exporter.getInvoker().invoke(invocation);
}
//Invoker這個invoker就是暴露時創建的 Invoker裏面包類似springmvc的Wapper
|