在这一篇主要讲解怎么配置运行一个dubbo程序(在此之前,大家首先去下载zookeeper注册中心,并且安装好,我这里用的是公司的注册中心IP)
首先是provider层的一些配置
Provider:
首先建立了一个maven项目,因为Dubbo需用Spring去加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载,所以
在pom里面配置spring相关的配置
org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现
org.springframework.asm——spring2.5.6的时候需要asm jar包,spring3.0开始提供它自己独立的asm jar包
org.springframework.core——Spring的核心工具包,其他包依赖此包
org.springframework.beans——所有应用都用到,包含访问配置文件,创建和管理bean等,是Spring IOC的基础实现。
org.springframework.context——提供在基础IOC功能上的扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、
JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持。
org.springframework.expression——Spring表达式语言
还有dubbo的配置,用的dubbo版本是2.5.3版本
Zookeeper配置,用的是3.3.6版本
pom文件代码
xml version="1.0" encoding="UTF-8"?>xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.provider provider 1.0-SNAPSHOT dubboserver http://maven.apache.org UTF-8 3.1.4.RELEASE 1.6.6 junit junit 3.8.1 test org.springframework spring-aop ${spring.version} org.springframework spring-asm ${spring.version} org.springframework spring-core ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-expression ${spring.version} log4j log4j 1.2.16 org.slf4j slf4j-api ${slf4j.version} org.slf4j slf4j-log4j12 ${slf4j.version} com.alibaba dubbo 2.5.3 com.github.sgroschupf zkclient 0.1 org.apache.zookeeper zookeeper 3.3.6 dubbo-demo org.apache.maven.plugins maven-compiler-plugin 2.1 1.5 1.5 UTF-8 false
然后呢配置ApplicationContext.xml的配置文件信息
Provider:
主要配置四个方面的东西,
(1) 具体的实现bean
(2) 提供方的应用信息,提供依赖关系
(3) 使用zookeeper注册中心暴露接口
(4) 用dubbo协议在某个端口暴露服务
(5) 声明需要暴露的服务接口
xml version="1.0" encoding="UTF-8"?>xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> id="testService" class="com.provider.dubbo.serviceImpl.TestServiceImpl" /> <dubbo:application name="providerTest" /> <dubbo:registry address="zookeeper://IP地址" /> <dubbo:protocol name="dubbo" port="20885" /> <dubbo:service interface="com.provider.dubbo.service.TestService" ref="testService" />
然后就是提供者需要提供什么接口了
首先我定义了一个ServiceTest接口
package com.provider.dubbo.service; /** * Created by WUYAO873 on 2017/8/14. */ public interface TestService { public String getName(); }
package com.provider.dubbo.serviceImpl; import com.provider.dubbo.service.TestService; import java.io.Serializable; /** * Created by WUYAO873 on 2017/8/14. */ public class TestServiceImpl implements TestService,Serializable { public String getName() { return "我是提供者"; } }
最后建立了一个测试类TestServiceTest
package com.provider.dubbo; import java.io.IOException; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * Created by WUYAO873 on 2017/8/14. */ public class TestServiceTest { public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( new String[]{"applicationContext.xml"}); context.start(); System.out.println("提供服务者已经注册"); try { System.in.read(); } catch (IOException e) { e.printStackTrace(); } } }
这个是整个provider结构图
下面我们配置消费者
Consumer:
消费者层的配置pom配置和提供者的配置类似(可以拷贝),只是增加了一个依赖包,依赖于providor的groupId,artifactId和Version.
然后基本的版本配置就是这样,接下来需要配置一些bean信息和zookeeper的信息,配置在applicationContxt.Xml里面
Consumer的ApplicationContext.xml文件xml version="1.0" encoding="UTF-8"?>xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <dubbo:application name="consumer" /> <dubbo:registry protocol="zookeeper" address="zookeeper://ID地址" /> <dubbo:reference id="testService" interface="com.provider.dubbo.service.TestService" />
package com.provider.dubbo.service; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.io.IOException; public class ConsumerServiceTest { public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( new String[] { "applicationContext.xml" }); context.start(); TestService testService = (TestService) context.getBean("testService"); System.out.println(testService.getName()); try { System.in.read(); } catch (IOException e) { e.printStackTrace(); } } }
这是整个Consumer的结构图
这样下来我们就配置好了,
接下来我们先要启动zookeeper注册中心,
然后启动我们的提供者provider的测试类TestServiceTest
这样呢,我们就已经把接口暴露在了注册中心,我们在消费者就可以拿到
这个时候我们就可以早zookeeper的注册中心查到自己注册的提供者
(2)
也可以根据你在provider的配置文件里面的提供者应用名查询
运行消费者的ConsumerServiceTest类
运行成功,得到提供者的提供信息,
我这里用的zookeeper注册中心是用公司的IP地址,大家在需要的时候可以去官网下载安装