1. 程式人生 > >dubbo服務的 遠端呼叫

dubbo服務的 遠端呼叫

首先dubbo 和spring 是無縫整合的,先看下配置檔案 提供端的,

<!-- 具體的實現bean -->
<bean id="testService" class="com.dubbo.provider.impl.TetsServiceImpl" />
<!-- 提供方應用資訊,用於計算依賴關係 -->
<dubbo:application name="xixi_provider" />
<!-- 使用multicast廣播註冊中心暴露服務地址 <dubbo:registry address="multicast://224.5.6.7:1234" 
/> --> <!-- 使用zookeeper註冊中心暴露服務地址 --> <!--<dubbo:registry address="zookeeper://10.28.53.83:2181" /> --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo協議在20880埠暴露服務 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 宣告需要暴露的服務介面 -->
<dubbo:service interface="com.dubbo.provider.TetsService" ref="testService" />

大概就是這樣,一些標籤 和bean例項 介面service層    注意zookeeper  ip和埠配置

在看消費端

<!-- 消費方應用名,用於計算依賴關係,不是匹配條件,不要與提供方一樣 -->
<dubbo:application name="test_consumer" />
<!-- 使用zookeeper註冊中心暴露服務地址 -->
   <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
<!-- <dubbo:registry address="zookeeper://10.28.53.83:2181" /> --> <!-- 使用zookeeper註冊中心暴露服務地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 生成遠端服務代理,可以像使用本地bean一樣使用demoService --> <dubbo:reference id="testService" interface="com.dubbo.provider.testService" />

注意的問題:在消費端要引入提供端的一些依賴,實體 服務層等等, zookeeper服務啟動正常,

最後再通過單例dubbo和spring整合, 如下

public class DubboService {
   /** 單例物件 **/
public static final DubboService me = new DubboService();
/** spring上下文 **/
private ClassPathXmlApplicationContext context = null;
   private final static String providerConfig = "applicationContext-mybatis.xml";
   public DubboService() {
      loadRpcConfig();
}

   /**
    * 載入RPC服務
    */
protected void loadRpcConfig(){
      context = new ClassPathXmlApplicationContext(new String[] {providerConfig});
context.start();
}
   
   /**
    * 通過引用id獲取遠端服務物件例項
    * @param referenceId
* @return 返回遠端服務物件例項
    */
public Object getRpcService(String referenceId){
      return context.getBean(referenceId);
}
}

最後 可以在專案中呼叫別的服務介面了,  待續...........