本案例使用zookeeper3.4.9 dubbox2.8.4 maven3.5.4
开发工具 eclipse
maven下载:http://maven.apache.org/download.cgi
dubbox下载:https://github.com/dangdangdotcom/dubbox/releases/tag/dubbox-2.8.4 下载后在dubbox目录按shift+右键 打开命令窗口(cmd 窗口) 执行:mvn install -Dmaven.test.skip=true 编译到本地厂库
zookeeper下载:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/ 下载后到本地 进入zookeeper conf目录 创建
zoo_sample.cfg 副本, 改名为zoo.cfg 打开该文件
添加这两个路径,自行创建改目录。
1。准备完成可以开始创建dubbox入门案例了。
创建maven project项目
点击next
点击finish
创建好的工程结构
打开pom文件导入需要的jar包
<project 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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dubbox.parent</groupId>
<artifactId>DubboxHello-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- spring版本号 -->
<spring.version>4.2.5.RELEASE</spring.version>
<!-- log4j日志包版本号 -->
<slf4j.version>1.7.18</slf4j.version>
<log4j.version>1.2.17</log4j.version>
</properties>
<dependencies>
<!-- 添加spring核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- spring 结束 -->
<!-- 添加日志相关jar包 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
<!-- zeekeeper注册中心 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
2。 选中该项目创建一个maven module 项目
next
next
选择war工程 finish
创建好后项目有错,因为当前项目缺少web.xml文件。解决方法:当前项目右键 java ee tools >> generate Deployment Descriptor stub 点击解决该问题。
创建一个测试接口
接口创建好后右键该项目 run as >> maven install 下。
3。创建服务提供方:选择主工程右键创建maven module类型
next
finish
创建完项目,打开pom文件
4.添加api的依赖
选择后保存 pom文件里的内容>
<project 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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.dubbox.parent</groupId>
<artifactId>DubboxHello-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId> dubboxHello-provider</artifactId>
<dependencies>
<dependency>
<groupId>com.dubbox.parent</groupId>
<artifactId>DubboxHello-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
</dependency>
</dependencies>
</project>
在创建对api项目的接口实现类
package com.dubbox.interfaceImpl;
import com.dubbox.interfaces.helloInterface;
public class helloInterfacesImpl implements helloInterface {
@Override
public String sayHello() {
// TODO Auto-generated method stub
return "hello dubbox";
}
}
如果找不到接口,删除pom下<type>war</type>
标签就可以找到接口了
接着创建provider.xml 配置dubbo
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:application name="dubbo-provider" />
<!--注册到zookeeper-->
<dubbo:registry address="127.0.0.1:2181" protocol="zookeeper" />
<!--固定写法-->
<dubbo:protocol name="dubbo" port="20880" />
<!-- api下接口路径 -->
<dubbo:service interface="com.dubbox.interfaces.helloInterface" ref="demoService" />
<!--接口的实现类-->
<bean id="demoService" class="com.dubbox.interfaceImpl.helloInterfacesImpl" />
</beans>
如果dubbo标签报错引入dubbo的xsd约束文件
Add 添加约束
约束文件可以用dubbox下载的解压包路径下的
location 值:
key值 : http://code.alibabatech.com/schema/dubbo/dubbo.xsd
next
创建log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %t %5p %c{2}: %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="CONSOLE" />
</root>
</log4j:configuration>
创建provider 类 启动服务
package com.dubbox.Demo.Impl;
import java.io.IOException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml");
context.start();
System.out.println("service start ...");
System.in.read();
}
}
3。创建服务消费者
和服务提供者一样 jar类型的maven module项目
finish
打开当前创建的项目pom.xml 导入api项目的依赖
<project 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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.dubbox.parent</groupId>
<artifactId>DubboxHello-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>DubboxHello-consumer</artifactId>
<dependencies>
<dependency>
<groupId>com.dubbox.parent</groupId>
<artifactId>DubboxHello-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
</dependency>
</dependencies>
</project>
删除<type>war</type>
标签。不然找不到api接口类
复制provider 项目的log4j.xml 到consumer项目下。
创建consumer.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- name可自己写 -->
<dubbo:application name="dubbo-consumer"/>
<!-- 固定写法 -->
<dubbo:registry address="127.0.0.1:2181" protocol="zookeeper"/>
<!-- id:不固定, interface:接口地址-->
<dubbo:reference interface="com.dubbox.interfaces.helloInterface" id="xxx" ></dubbo:reference>
</beans>
创建消费者测试类
package com.dubbox.consumer;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dubbox.interfaces.helloInterface;
public class consumerServer {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml");
context.start();
helloInterface service = context.getBean(helloInterface.class);
System.out.println(service.sayHello());
}
}
1.启动zookeeper
E:\zookeeper-3.4.9\bin\zkServer.cmd
2.启动provider 服务提供者类 run
3.启动consumer 消费者类 run