dubbox入门案例

本案例使用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
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值