实现功能:
存在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、控制台打印如下
代码已上传,点击下载