dubbo client server demo

個客戶端。

    服務端

    服務端maven父工程

    首先搭建一個maven父工程,引入dubbo和spring的依賴,dubbo能夠和spring無縫集成。
[html] view plain copy
  1. <properties>  
  2.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  3.         <v.dubbo.ext>1.3.0-SNAPSHOT</v.dubbo.ext>  
  4.         <v.spring>3.1.2.RELEASE</v.spring>  
  5.         <v.plugin.jar>2.3.1</v.plugin.jar>  
  6.     </properties>  
  7.   
  8.     <dependencies>  
  9.         <dependency>  
  10.             <groupId>com.jd.dubbo.ext</groupId>  
  11.             <artifactId>dubbo-ext-spi</artifactId>  
  12.             <version>${v.dubbo.ext}</version>  
  13.         </dependency>  
  14.         <dependency>  
  15.             <groupId>org.springframework</groupId>  
  16.             <artifactId>spring-core</artifactId>  
  17.             <version>${v.spring}</version>  
  18.         </dependency>  
  19.         <dependency>  
  20.             <groupId>org.springframework</groupId>  
  21.             <artifactId>spring-beans</artifactId>  
  22.             <version>${v.spring}</version>  
  23.         </dependency>  
  24.         <dependency>  
  25.             <groupId>org.springframework</groupId>  
  26.             <artifactId>spring-context</artifactId>  
  27.             <version>${v.spring}</version>  
  28.         </dependency>  
  29.         <dependency>  
  30.             <groupId>org.springframework</groupId>  
  31.             <artifactId>spring-context-support</artifactId>  
  32.             <version>${v.spring}</version>  
  33.         </dependency>  
  34.         <dependency>  
  35.             <groupId>org.springframework</groupId>  
  36.             <artifactId>spring-tx</artifactId>  
  37.             <version>${v.spring}</version>  
  38.         </dependency>  
  39.         <dependency>  
  40.             <groupId>org.springframework</groupId>  
  41.             <artifactId>spring-orm</artifactId>  
  42.             <version>${v.spring}</version>  
  43.         </dependency>  
  44.         <dependency>  
  45.             <groupId>org.springframework</groupId>  
  46.             <artifactId>spring-web</artifactId>  
  47.             <version>${v.spring}</version>  
  48.         </dependency>  
  49.     </dependencies>  
    這些都是開發dubbo服務端必需要用的依賴包。

    服務端接口子模塊

    這個模塊負責向第三方應用暴露接口的定義,實如今其它的包裏。third party 應用須要引入這個包,但沒法看到接口的實現。
    這個模塊十分簡單,只需提供接口定義。
[java] view plain copy
  1. package org.dubbo.server.api;  
  2.   
  3. public interface DemoService {  
  4.      public String sayHello(String name);    
  5. }  

    服務端接口實現子模塊

    從新建立一個maven module,這個模塊負責實現上面模塊定義的接口。
    實現以下:
[java] view plain copy
  1. package org.dubbo.server.service;  
  2.   
  3. import org.dubbo.server.api.DemoService;  
  4. import org.springframework.stereotype.Service;  
  5.   
  6. @Service ("demoService")  
  7. public class DemoServiceImpl implements DemoService{  
  8.      public String sayHello(String name) {    
  9.          return "Hello " + name;    
  10.   }    
  11. }  
    同時服務端應該做爲一個獨立的應用部署起來,處理客戶端的請求。
[java] view plain copy
  1. package org.dubbo.server.service;  
  2.   
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  4.   
  5.   
  6. public class DubboServer {  
  7.     public static void main(String[] args) throws Exception {    
  8.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});    
  9.         context.start();    
  10.   
  11.         System.in.read(); // 爲保證服務一直開着,利用輸入流的阻塞來模擬    
  12.     }    
  13. }  

    好,服務端跑起來了。

    服務端dubbo配置

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans    
  6.         http://www.springframework.org/schema/beans/spring-beans.xsd    
  7.         http://code.alibabatech.com/schema/dubbo    
  8.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd    
  9.         http://www.springframework.org/schema/context   
  10.         http://www.springframework.org/schema/context/spring-context.xsd"  
  11.         default-autowire="byName">  
  12.           
  13.     <context:component-scan base-package="org.dubbo.server.service.**" />  
  14.     <!-- 消費方應用名,用於計算依賴關係,不是匹配條件,不要與提供方同樣 -->  
  15.     <dubbo:application name="hehe_consumer" organization="risk.im.jd.com"  
  16.         owner="lvsheng" />  
  17.   
  18.     <!-- 使用zookeeper註冊中心暴露服務地址 -->  
  19.     <dubbo:registry id="registry" address="10.28.163.15:6060" />  
  20.   
  21.     <dubbo:protocol id="protocol" name="dubbo" port="25000"  
  22.         heartbeat="0" threadpool="cached" threads="512" />  
  23.   
  24.     <dubbo:provider id="im.riskctrl.dubbo.provider" timeout="5000"  
  25.         retries="5" loadbalance="roundrobin" cluster="failover" registry="registry">  
  26.     </dubbo:provider>  
  27.   
  28.     <!-- 生成遠程服務代理,能夠像使用本地bean同樣使用demoService -->  
  29.     <dubbo:service interface="org.dubbo.server.api.DemoService" ref="demoService"  
  30.         provider="im.riskctrl.dubbo.provider" >  
  31.     </dubbo:service>  
  32.   
  33. </beans>    

    註冊中心

    dubbo註冊中心我使用的是dubbo官網的註冊中心demo。

    客戶端

    客戶端簡單的搭建一個普通的maven工程就好了。pom依賴跟服務端的一致。
    客戶端的調用代碼以下:
[java] view plain copy
  1. package com.jd.lvsheng.dubbo.client.test;  
  2.   
  3. import org.dubbo.server.api.DemoService;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5. import org.springframework.stereotype.Service;  
  6.   
  7. @Service ("dubboConsumer")  
  8. public class DubboConsumer {  
  9.   
  10.     public static void main(String[] args) throws Exception {  
  11.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });  
  12.         context.start();  
  13.         DemoService demoService = context.getBean("demoService", DemoService.class);  
  14.         System.out.println(demoService.sayHello("aaa"));  
  15.         System.in.read();  
  16.     }  
  17. }  
    客戶端的spring配置以下:
[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans    
  6.         http://www.springframework.org/schema/beans/spring-beans.xsd    
  7.         http://code.alibabatech.com/schema/dubbo    
  8.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd    
  9.         http://www.springframework.org/schema/context   
  10.         http://www.springframework.org/schema/context/spring-context.xsd"  
  11.         default-autowire="byName">  
  12.           
  13.     <!-- 消費方應用名,用於計算依賴關係,不是匹配條件,不要與提供方同樣 -->  
  14.     <dubbo:application name="dubbo_consumer" organization="risk.im.com"  
  15.         owner="lvsheng" />  
  16.   
  17.     <!-- 使用zookeeper註冊中心暴露服務地址 -->  
  18.     <dubbo:registry id="registry" address="10.28.163.15:6060" />  
  19.   
  20.     <dubbo:protocol id="protocol" name="dubbo" port="25001"  
  21.         heartbeat="0" threadpool="cached" threads="512" />  
  22.   
  23.     <dubbo:provider id="im.riskctrl.dubbo.provider" timeout="5000"  
  24.         retries="5" loadbalance="roundrobin" cluster="failover" registry="registry">  
  25.     </dubbo:provider>  
  26.   
  27.     <!-- 生成遠程服務代理,能夠像使用本地bean同樣使用demoService -->  
  28.     <dubbo:reference interface="org.dubbo.server.api.DemoService" id="demoService" registry="registry">  
  29.     </dubbo:reference>  
  30.   
  31. </beans>    
    整個工程是能夠運行的。
相關文章
相關標籤/搜索