1. 程式人生 > >dubbo釋出和呼叫服務

dubbo釋出和呼叫服務

1.釋出服務

   <!-- 宣告需要暴露的服務介面 -->
    <dubbo:protocol  name="dubbo" port="9092"/>
    <dubbo:service interface="IConfigReadService" ref="config_read_service"  protocol="dubbo"/>
    
    <!-- 具體的實現bean -->
    <bean id="config_read_service" class="ConfigReadServiceImpl" />

    dubbo釋出一個服務,是隨著spring容器啟動完成的。具體是:會先讀取配置xml,然後解析名稱空間,觸發對應名稱空間的註冊的handler處理器,解析<dubbo:service>會生成ServiceBean,因為沒有配置delay屬性,所以是在容器初始化所有bean,會在Spring容器初始化完成,接收到ContextRefreshedEvent事件,呼叫onApplicationEvent,暴露dubbo服務,啟動netty server繫結埠.

2.呼叫服務

<dubbo:reference id="demoService"interface="com.alibaba.dubbo.demo.DemoService" />

使用demoService呼叫的時候,會觸發代理物件方法的呼叫(因為這個物件的引用是個動態代理物件),呼叫InvokerInvocationHandler的 invoke方法

2.呼叫

3.走到ListenerInvokerWrapper 傳遞給內部的invoker.invoke(invocation)

4.  經過一系列的filter和invoker

5.最後到DubboInvoker傳送netty訊息