初学:用dubbo和zookeeper来实现十分简单的项目之间远程调用

zookeeper官方下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.13/ ,下载好后,先将conf文件夹下的 zoo-sample.cfg重命名为zoo.cfg,同时系统环境中要配置JAVA_HOME

  • dubbo-server项目

新建一个maven项目“dubbo-server”,建好相应的包,最终目录结构如下:


初学:用dubbo和zookeeper来实现十分简单的项目之间远程调用_第1张图片
dubbo-server项目目录结构

pom.xml中的依赖如下:


  4.0.0
  com.eduask
  dubbo-server
  0.0.1-SNAPSHOT
  
   server  
    http://maven.apache.org  
  
      
        UTF-8  
      
  
      
          
          
            org.springframework  
            spring-context  
            4.1.6.RELEASE  
          
          
  
          
          
            com.alibaba  
            dubbo  
            2.5.3  
          
          
  
          
          
            org.apache.zookeeper  
            zookeeper  
            3.3.6  
          
          
  
          
          
            commons-logging  
            commons-logging  
            1.1.1  
          
          
            log4j  
            log4j  
            1.2.15  
              
                  
                    com.sun.jdmk  
                    jmxtools  
                  
                  
                    com.sun.jmx  
                    jmxri  
                  
                  
                    jms  
                    javax.jms  
                  
                  
                    mail  
                    javax.mail  
                  
              
          
          
          
          
          
            org.jboss.netty  
            netty  
            3.2.0.Final  
          
          
            com.101tec  
            zkclient  
            0.8  
          
          
    

在source资源文件夹下的applicationProvider.xml配置如下:


  
    
      
          
    
    
      
    
      
      
       
      
  
      
     
  

在service包下写接口DemoService.java

package com.eduask.service;

public interface DemoService {
    public String getHello(String name);
}

和实现类DemoServiceImpl.java

package com.eduask.service.imp;

import com.eduask.service.DemoService;

public class DemoServiceImp implements DemoService {
    @Override
    public String getHello(String name) {
        return "hello"+name;
    }
}

test包下新建Test.java

package com.eduask.test;

import java.io.IOException;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationProvider.xml"});
        context.start();
        System.out.println("输入任意按键退出 ~ ");
        System.in.read();
        context.close();
    }
}

此时可以先试试服务能不能跑了,先到zookeeper的bin目录下,运行 zkServer.cmd ,将zookeeper的服务跑起来,再运行这个项目中的Test.java,控制台打印:

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
输入任意按键退出 ~ 
  • dubbo-client项目

新建一个maven项目“dubbo-client”,建好相应的包,最终目录结构如下:


初学:用dubbo和zookeeper来实现十分简单的项目之间远程调用_第2张图片
dubbo-client项目目录结构

pom.xml中的依赖如下:


  4.0.0
  com.eduask
  dubbo-client
  0.0.1-SNAPSHOT
  
   client  
    http://maven.apache.org  
  
      
        UTF-8  
      
  
      
          
          
            org.springframework  
            spring-context  
            4.1.6.RELEASE  
          
          
  
          
          
            com.alibaba  
            dubbo  
            2.5.3  
          
          
  
          
          
            org.apache.zookeeper  
            zookeeper  
            3.3.6  
          
          
  
          
          
            log4j  
            log4j  
            1.2.15  
              
                  
                    com.sun.jdmk  
                    jmxtools  
                  
                  
                    com.sun.jmx  
                    jmxri  
                  
                  
                    jms  
                    javax.jms  
                  
                  
                    mail  
                    javax.mail  
                  
              
          
          
  
          
          
            com.101tec  
            zkclient  
            0.8  
          
       
          
            com.eduask  
            dubbo-server  
            0.0.1-SNAPSHOT  
          
          
    

在source资源文件夹下的applicationConsumer.xml配置如下:


  
     
      
     
      
  
     
     
      
 

最后在test包下建Test.java

package com.eduask.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.eduask.service.DemoService;

public class Test {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(  
                new String[] { "applicationConsumer.xml" });  
        context.start();  
        DemoService service = (DemoService) context.getBean("demoService");  
        System.out.println(service.getHello(" 老王"));  
        context.close();
    }
}

运行(前提是zookeeper和dubbo-server项目没停),控制台打印:

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
hello 老王

远程调用成功。

你可能感兴趣的:(初学:用dubbo和zookeeper来实现十分简单的项目之间远程调用)