zoukankan      html  css  js  c++  java
  • Dubbox和zk入门案例

    Dobbox并没有在Maven仓库中存在,如果我们要导入Dubbox的依赖的话,就要将Dubbox安装到我们的maven仓库中

     Dubbox的提取地址

    链接:https://pan.baidu.com/s/1P5EsA6vXkyIE8-O_OmDd7w 
    提取码:prjc

    Zookeeper(Windows)单机版

    链接:https://pan.baidu.com/s/13XHOSOf7djXRiyxKTo1XQQ 
    提取码:8i2x

    ZK的单机版安装请参考鄙人的另一篇博客

    https://www.cnblogs.com/yjc1605961523/p/11929346.html

    1.将Dubbox的压缩包下载之后进行解压

    2.在Dubbox的根目录下

     3.在上面的路径中输入cmd,进入命令提示符

     4.执行命令:mvn clean install -Dmaven.test.skip=true

    5.上一步完成之后在dubbo目录下会出现一个target目录

     6.在命令提示符中执行下列的的命令,将刚才编译出来的jar文件安装到Maven仓库中,命令中红色的部分更改为自己Dubbox所在的目录

    mvn install:install-file -Dfile=D:Softdubbox-masterdubbo	argetdubbo-2.8.4.jar -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=jar -DgeneratePom=true

    7.启动ZK服务端,启动之后窗口不要关闭

    以上的步骤完成之后,就ok,接下来就可以进行编码了

    引入所要使用到的依赖,生产者和消费者一样,红色的依赖就是刚才安装到Maven仓库的Dubbox的依赖

     <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>2.8.4</version>
            </dependency>
            <!-- 添加zk客户端依赖 -->
            <dependency>
                <groupId>com.github.sgroschupf</groupId>
                <artifactId>zkclient</artifactId>
                <version>0.1</version>
            </dependency>
    
            <dependency>
                <groupId>org.jboss.resteasy</groupId>
                <artifactId>resteasy-jaxrs</artifactId>
                <version>3.0.7.Final</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.resteasy</groupId>
                <artifactId>resteasy-client</artifactId>
                <version>3.0.7.Final</version>
            </dependency>
            <dependency>
                <groupId>javax.validation</groupId>
                <artifactId>validation-api</artifactId>
                <version>1.0.0.GA</version>
            </dependency>
    
            <!-- 如果要使用json序列化 -->
            <dependency>
                <groupId>org.jboss.resteasy</groupId>
                <artifactId>resteasy-jackson-provider</artifactId>
                <version>3.0.7.Final</version>
            </dependency>
    
            <!-- 如果要使用xml序列化 -->
            <dependency>
                <groupId>org.jboss.resteasy</groupId>
                <artifactId>resteasy-jaxb-provider</artifactId>
                <version>3.0.7.Final</version>
            </dependency>
    
            <!-- 如果要使用netty server -->
            <dependency>
                <groupId>org.jboss.resteasy</groupId>
                <artifactId>resteasy-netty</artifactId>
                <version>3.0.7.Final</version>
            </dependency>
    
            <!-- 如果要使用Sun HTTP server -->
            <dependency>
                <groupId>org.jboss.resteasy</groupId>
                <artifactId>resteasy-jdk-http</artifactId>
                <version>3.0.7.Final</version>
            </dependency>
    
            <!-- 如果要使用tomcat server -->
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-core</artifactId>
                <version>8.0.11</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-logging-juli</artifactId>
                <version>8.0.11</version>
            </dependency>
            <dependency>
                <groupId>com.esotericsoftware.kryo</groupId>
                <artifactId>kryo</artifactId>
                <version>2.24.0</version>
            </dependency>
            <dependency>
                <groupId>de.javakaffee</groupId>
                <artifactId>kryo-serializers</artifactId>
                <version>0.26</version>
            </dependency>
            <dependency>
                <groupId>de.ruedigermoeller</groupId>
                <artifactId>fst</artifactId>
                <version>1.55</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.3.3</version>
            </dependency>
            <dependency>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty</artifactId>
                <version>7.0.0.pre5</version>
            </dependency>

    生产者和消费者都需要使用的接口

    package com.yjc.service;
    
    import javax.ws.rs.Consumes;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.core.MediaType;
    
    @Path("/user")
    public interface UserService {
        @GET
        @Path("/getUser/{id}")
        @Consumes({ MediaType.APPLICATION_JSON })
        public String getUser(@PathParam("id") Integer id);
    }

    生产者中的接口实现类

    package com.yjc.service.impl;
    
    import com.yjc.service.UserService;
    
    public class UserServiceImpl implements UserService {
        @Override
        public String getUser(Integer id) {
            System.out.println("dubbox发布----UserService类中的getUser方法,参数----"+id);
            return "dubbox";
        }
    }

    生产者中的配置文件applicationContext.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:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
            xmlns:context="http://www.springframework.org/schema/context"
           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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
    
        <!-- 提供方应用信息,用于计算依赖关系 -->
        <dubbo:application name="app-provider"/>
    
        <!-- 使用zookeeper注册中心暴露服务地址 -->
    <!--    <dubbo:registry address="192.168.118.3:2181,192.168.118.4:2181,192.168.118.5:2181"   protocol="zookeeper" />-->
        <dubbo:registry address="127.0.0.1:2181"   protocol="zookeeper" />
    
        <dubbo:protocol name="rest" port="8081" />
    
        <!-- 声明需要暴露的服务接口 -->
        <dubbo:service interface="com.yjc.service.UserService" ref="iUserService" />
        <bean id="iUserService" class="com.yjc.service.impl.UserServiceImpl"/>
    </beans>

    生产者测试类

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import java.io.IOException;
    
    public class AppTest 
    {
        public static void main(String[] args) throws IOException {
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            System.out.println("duboox 注册成功!");
            System.in.read();
        }
    }

    消费者中的配置文件applicationContext.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:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
            xmlns:context="http://www.springframework.org/schema/context"
           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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
    
        <!-- 提供方应用信息,用于计算依赖关系 -->
        <dubbo:application name="app-provider"/>
    
        <!-- 使用zookeeper注册中心暴露服务地址 -->
        <dubbo:registry address="127.0.0.1:2181"   protocol="zookeeper" />
    
    
    
        <!-- 声明需要暴露的服务接口 -->
        <dubbo:reference interface="com.yjc.service.UserService" id="iUserService" />
    </beans>

    消费者中的测试类

    package com.yjc;
    
    import static org.junit.Assert.assertTrue;
    
    import com.yjc.service.UserService;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import java.io.IOException;
    
    /**
     * Unit test for simple App.
     */
    public class AppTest 
    {
        public static void main(String[] args) throws IOException {
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            UserService userService  = (UserService)ctx.getBean("iUserService");
            String user = userService.getUser(100);
            System.out.println("消费者消费的参数-----"+user);
            System.in.read();
        }
    }

    最后先启动生产者的测试类,然后启动消费者的测试类这样就大功告成了

  • 相关阅读:
    LTE网络注册流程(1)(2)(3)
    Linux 添加用户
    (TOJ2627)台州学院首届新生程序设计竞赛参赛资格
    (TOJ1249)四数相加
    (TOJ1192)A + B Problem II
    (TOJ1065)完美数
    (TOJ1248)Encoding
    (TOJ1051)A × B problem
    (TOJ1506)Sort ZOJ7
    (TOJ1531)爱的伟大意义
  • 原文地址:https://www.cnblogs.com/yjc1605961523/p/12012213.html
Copyright © 2011-2022 走看看