Dubbo實踐(十)代理
阿新 • • 發佈:2018-07-19
div public nal ice threads read ssis vat adapt
Invoker調用
代理有幾種方式:普通代理、JDK、Javassist庫動態代理、Javassist庫動態字節碼代理。
生成代理的目的是你調用invoker的相關函數後,就等同於是調用DubboInvoker中的相關函數,也就是將本地調用轉為網絡調用並獲得結果。
// create service proxy return (T) proxyFactory.getProxy(invoker);
private static final ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
/** * ProxyFactory. (API/SPI, Singleton, ThreadSafe) */ @SPI("javassist") public interface ProxyFactory { /** * create proxy. * * @param invoker * @return proxy */ @Adaptive({Constants.PROXY_KEY}) <T> T getProxy(Invoker<T> invoker) throwsRpcException; /** * create invoker. * * @param <T> * @param proxy * @param type * @param url * @return invoker */ @Adaptive({Constants.PROXY_KEY}) <T> Invoker<T> getInvoker(T proxy, Class<T> type, URL url) throws RpcException; }
Dubbo實踐(十)代理