dubbo系列文章(一):dubbo入门示例

实现功能:  

  存在2个系统,A系统和B系统,A系统发布服务,B系统远程调用。

1、解压zookeeper-3.4.10.tar.gz,将/conf/zoo_sample.cfg拷贝,更名为zoo.cfg,并修改zoo.cfg配置文件

2、双击启动zookeeper

3、启动后如下所示

4.创建系统A:dubbo_provide_demo

5、导入依赖

 1 <properties>
 2         <spring.version>3.2.8.RELEASE</spring.version>
 3     </properties>
 4 
 5     <dependencies>
 6         <dependency>
 7             <groupId>com.alibaba</groupId>
 8             <artifactId>dubbo</artifactId>
 9             <version>2.5.3</version>
10             <exclusions>
11                 <exclusion>
12                     <groupId>org.springframework</groupId>
13                     <artifactId>spring</artifactId>
14                 </exclusion>
15             </exclusions>
16         </dependency>
17         <dependency>
18             <groupId>com.github.sgroschupf</groupId>
19             <artifactId>zkclient</artifactId>
20             <version>0.1</version>
21         </dependency>
22         <!-- spring相关 -->
23         <dependency>
24             <groupId>org.springframework</groupId>
25             <artifactId>spring-core</artifactId>
26             <version>${spring.version}</version>
27         </dependency>
28         <dependency>
29             <groupId>org.springframework</groupId>
30             <artifactId>spring-beans</artifactId>
31             <version>${spring.version}</version>
32         </dependency>
33         <dependency>
34             <groupId>org.springframework</groupId>
35             <artifactId>spring-context</artifactId>
36             <version>${spring.version}</version>
37         </dependency>
38         <dependency>
39             <groupId>org.springframework</groupId>
40             <artifactId>spring-jdbc</artifactId>
41             <version>${spring.version}</version>
42         </dependency>
43         <dependency>
44             <groupId>org.springframework</groupId>
45             <artifactId>spring-web</artifactId>
46             <version>${spring.version}</version>
47         </dependency>
48         <dependency>
49             <groupId>org.springframework</groupId>
50             <artifactId>spring-webmvc</artifactId>
51             <version>${spring.version}</version>
52         </dependency>
53         <dependency>
54             <groupId>org.springframework</groupId>
55             <artifactId>spring-aop</artifactId>
56             <version>${spring.version}</version>
57         </dependency>
58         <dependency>
59             <groupId>org.springframework</groupId>
60             <artifactId>spring-tx</artifactId>
61             <version>${spring.version}</version>
62         </dependency>
63         <dependency>
64             <groupId>org.springframework</groupId>
65             <artifactId>spring-orm</artifactId>
66             <version>${spring.version}</version>
67         </dependency>
68         <dependency>
69             <groupId>org.springframework</groupId>
70             <artifactId>spring-context-support</artifactId>
71             <version>${spring.version}</version>
72         </dependency>
73         <dependency>
74             <groupId>org.springframework</groupId>
75             <artifactId>spring-test</artifactId>
76             <version>${spring.version}</version>
77         </dependency>
78         <dependency>
79             <groupId>org.springframework</groupId>
80             <artifactId>spring-jms</artifactId>
81             <version>${spring.version}</version>
82         </dependency>
83     </dependencies>

6、创建接口ProviderService及实现类ProviderServiceImpl

1 public interface ProviderService {
2 
3     public String sayHello(String name);
4 
5 }
1 public class ProviderServiceImpl implements ProviderService {
2 
3     public String sayHello(String name) {
4 
5         return "hello " + name;
6     }
7 
8 }

7、配置applicationProvider.xml

 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     xsi:schemaLocation="http://www.springframework.org/schema/beans  
 5         http://www.springframework.org/schema/beans/spring-beans.xsd  
 6         http://code.alibabatech.com/schema/dubbo  
 7         http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">   
 8     <!-- 具体的实现bean -->  
 9     <bean id="providerService" class="com.yukio.service.ProviderServiceImpl" />  
10     <!-- 提供方应用信息,用于计算依赖关系 -->  
11     <dubbo:application name="dubbo_provider"  />    
12     <!-- 使用zookeeper注册中心暴露服务地址 -->  
13     <dubbo:registry address="zookeeper://127.0.0.1:2181" />     
14     <!-- 用dubbo协议在20880端口暴露服务 -->  
15     <dubbo:protocol name="dubbo" port="29014" />  
16     <!-- 声明需要暴露的服务接口 -->  
17     <dubbo:service interface="com.yukio.service.ProviderService" ref="providerService" />  
18 </beans> 

8、创建测试类ProviderServiceTest

 1 package com.yukio.service;
 2 
 3 import java.io.IOException;
 4 
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6 
 7 /**
 8  * 测试类
 9  * 
10  * @author Administrator
11  * 
12  */
13 public class ProviderServiceTest {
14 
15     public static void main(String[] args) {
16         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
17                 new String[] { "applicationProvider.xml" });
18         context.start();
19         System.out.println("提供者服务已注册成功");
20         System.out.println("请按任意键取消提供者服务");
21         try {
22             System.in.read();// 让此程序一直跑,表示一直提供服务
23         } catch (IOException e) {
24             e.printStackTrace();
25         }
26     }
27 
28 }

9、zookeeper显示如下,服务已经注册到zookeeper上

10、创建项目B:dubbo_consume_demo

11、导入依赖

 1 <properties>
 2         <spring.version>3.2.8.RELEASE</spring.version>
 3     </properties>
 4 
 5     <dependencies>
 6         <!-- 添加provider的jar包 -->
 7         <dependency>
 8             <groupId>com.yukio</groupId>
 9             <artifactId>dubbo_provide_demo</artifactId>
10             <version>0.0.1-SNAPSHOT</version>
11         </dependency>
12         <!-- 添加dubbo依赖 -->
13         <dependency>
14             <groupId>com.alibaba</groupId>
15             <artifactId>dubbo</artifactId>
16             <version>2.5.3</version>
17             <exclusions>
18                 <exclusion>
19                     <groupId>org.springframework</groupId>
20                     <artifactId>spring</artifactId>
21                 </exclusion>
22             </exclusions>
23         </dependency>
24         <!-- 添加zk客户端依赖 -->
25         <dependency>
26             <groupId>com.github.sgroschupf</groupId>
27             <artifactId>zkclient</artifactId>
28             <version>0.1</version>
29         </dependency>
30         <!-- spring相关 -->
31         <dependency>
32             <groupId>org.springframework</groupId>
33             <artifactId>spring-core</artifactId>
34             <version>${spring.version}</version>
35         </dependency>
36         <dependency>
37             <groupId>org.springframework</groupId>
38             <artifactId>spring-beans</artifactId>
39             <version>${spring.version}</version>
40         </dependency>
41         <dependency>
42             <groupId>org.springframework</groupId>
43             <artifactId>spring-context</artifactId>
44             <version>${spring.version}</version>
45         </dependency>
46         <dependency>
47             <groupId>org.springframework</groupId>
48             <artifactId>spring-jdbc</artifactId>
49             <version>${spring.version}</version>
50         </dependency>
51         <dependency>
52             <groupId>org.springframework</groupId>
53             <artifactId>spring-web</artifactId>
54             <version>${spring.version}</version>
55         </dependency>
56         <dependency>
57             <groupId>org.springframework</groupId>
58             <artifactId>spring-webmvc</artifactId>
59             <version>${spring.version}</version>
60         </dependency>
61         <dependency>
62             <groupId>org.springframework</groupId>
63             <artifactId>spring-aop</artifactId>
64             <version>${spring.version}</version>
65         </dependency>
66         <dependency>
67             <groupId>org.springframework</groupId>
68             <artifactId>spring-tx</artifactId>
69             <version>${spring.version}</version>
70         </dependency>
71         <dependency>
72             <groupId>org.springframework</groupId>
73             <artifactId>spring-orm</artifactId>
74             <version>${spring.version}</version>
75         </dependency>
76         <dependency>
77             <groupId>org.springframework</groupId>
78             <artifactId>spring-context-support</artifactId>
79             <version>${spring.version}</version>
80         </dependency>
81         <dependency>
82             <groupId>org.springframework</groupId>
83             <artifactId>spring-test</artifactId>
84             <version>${spring.version}</version>
85         </dependency>
86         <dependency>
87             <groupId>org.springframework</groupId>
88             <artifactId>spring-jms</artifactId>
89             <version>${spring.version}</version>
90         </dependency>
91     </dependencies>
92 </project>  

12、配置applicationConsumer.xml

 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     xsi:schemaLocation="http://www.springframework.org/schema/beans    
 5         http://www.springframework.org/schema/beans/spring-beans.xsd    
 6         http://code.alibabatech.com/schema/dubbo    
 7         http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">          
 8     <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->    
 9     <dubbo:application name="dubbo_consumer" />       
10       <!-- 使用multicast广播注册中心暴露发现服务地址 -->    
11     <dubbo:registry  protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />         
12       <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->    
13     <dubbo:reference id="providerService" interface="com.yukio.service.ProviderService" />    
14 </beans>   

13、创建测试类ConsumerServiceTest

 1 public class ConsumerServiceTest {
 2 
 3     public static void main(String[] args) {
 4         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
 5                 new String[] { "applicationConsumer.xml" });
 6 
 7         context.start();
 8         ProviderService providerService = (ProviderService) context
 9                 .getBean("providerService");
10 
11         System.out.println(providerService.sayHello("林炳文"));
12         System.out.println("Press any key to exit.");
13         try {
14             System.in.read();
15         } catch (IOException e) {
16             e.printStackTrace();
17         }
18 
19     }
20 
21 }

14、控制台打印如下

代码已上传,点击下载

猜你喜欢

转载自www.cnblogs.com/yukio1993/p/9148043.html