1. 程式人生 > >Dubbo實踐(十)代理

Dubbo實踐(十)代理

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) throws
RpcException; /** * 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實踐(十)代理