• dubbo-简单Demo的实现(转+原创)


    转载自https://blog.csdn.net/noaman_wgs/article/details/70214612(本文只是针对该链接的项目的搭建和运行进行步骤的详细化,感谢!!!)

    dubbo的github地址:https://github.com/apache/incubator-dubbo(可下载整个压缩包,解压搜索xsd,就能找到dubbo.xsd文件)

    zookeeper3.4.10下载地址:https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.10/(解压到本地,并进入其conf目录,重命名zoo_sample.cfg为zoo.cfg即可,其余无需改动。)



    项目结构搭建

    • 新建maven聚合项目,DubboDemo,是pom类型。
      这里写图片描述
      这里写图片描述
    • 在DubboDemo项目右键新建一个module,dubbo-api,是war类型。
      这里写图片描述
      这里写图片描述
      这里写图片描述

    /
    新建完,项目报错。
    这里写图片描述
    点击项目,右键,Properties,找到Project Facets,并把Dynamic Web Module的勾去掉,并Apply应用。
    这里写图片描述
    然后再选择Dynamic Web Module版本为2.5并勾选上,底下会出现,Further configuration available,点击进入。
    这里写图片描述
    在dubbo-api底下输入框输入/src/main/webapp,并点击OK,然后再次点击OK,这样就自动生成了web-inf目录和web.xml文件。
    这里写图片描述
    (还有一种简单的方法就是在/src/main/webapp 目录下手动新建web-inf目录和web.xml文件)

    /

    • 在点击DubboDemo项目右键再新建一个module,dubbo-provider,是jar类型。
      这里写图片描述
    • 同理在DubboDemo新建一个module,叫dubbo-consumer,也是jar类型
    • 项目目录新建完毕,如下图所示。
      这里写图片描述

    创建文件

    • 打开DubboDemo项目的pom.xml文件,添加各种依赖,代码如下:

      4.0.0 com.my DubboDemo 0.0.1-SNAPSHOT pom dubbo-api dubbo-provider dubbo-consumer
      
      1.7
      1.7
      UTF-8
      UTF-8
      
      
      4.2.5.RELEASE
      
       
      1.7.18
      1.2.17
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      org.springframework spring-core ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-context-support ${spring.version}
      
      
        log4j
        log4j
        ${log4j.version}
      
      
        org.slf4j
        slf4j-api
        ${slf4j.version}
      
      
        org.slf4j
        slf4j-log4j12
        ${slf4j.version}
      
      
      
      
      
      
        org.apache.zookeeper
        zookeeper
        3.4.9
      
      
        com.101tec
        zkclient
        0.10
      
      
      
      
      
        com.alibaba
        dubbo
        2.5.3
        
          
            org.springframework
            spring
          
        
      
      
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
    • 在dubbo-api项目下,新建目录com.alibaba.dubbo.demo,并创建一个接口文件DemoService,代码如下:

      package com.alibaba.dubbo.demo;

      import java.util.List;

      public interface DemoService {
      List getPermissions(Long id);
      }

    • 打包dubbo-api,项目右键,run as =>maven install。

    • 在pom.xml文件中为dubbo-provider项目添加dubbo-api的依赖,代码如下:

      4.0.0 com.my DubboDemo 0.0.1-SNAPSHOT dubbo-provider com.my dubbo-api 0.0.1-SNAPSHOT
    • 在dubbo-provider项目下,新建目录com.alibaba.dubbo.demo.impl,并创建class文件名为DemoServiceImpl,实现DemoService接口,代码如下:

      package com.alibaba.dubbo.demo.impl;

      import java.util.ArrayList;
      import java.util.List;

      import com.alibaba.dubbo.demo.DemoService;

      public class DemoServiceImpl implements DemoService {
      public List getPermissions(Long id) {
      List demo = new ArrayList();
      demo.add(String.format(“Permission_%d”, id - 1));
      demo.add(String.format(“Permission_%d”, id));
      demo.add(String.format(“Permission_%d”, id + 1));
      return demo;
      }
      }

    • 再创建一个class文件provider,代码如下:

      package com.alibaba.dubbo.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”);
      System.err.println(context.getDisplayName() + “: here”);
      context.start();
      System.err.println(“服务已经启动…”);
      System.in.read();
      }
      }

    • 在resource目录下创建provider.xml文件和日志配置文件log4j.xml,代码如下:

    provider.xml:

    
    
        
        
        
        
        
        
        
        
        
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    log4j.xml:

    
    
    
        
            
                
            
        
        
            
            
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • dubbo-provider的目录结构如下:
      这里写图片描述

    • 在dubbo-consumer的pom.xml文件中添加dubbo-api的依赖,代码如下:

      4.0.0 com.my DubboDemo 0.0.1-SNAPSHOT dubbo-consumer com.my dubbo-api 0.0.1-SNAPSHOT
    • 在dubbo-consumer项目下新建目录com.alibaba.dubbo.consumer,并创建class文件Consumer,代码如下:

      package com.alibaba.dubbo.consumer;

      import org.springframework.context.support.ClassPathXmlApplicationContext;

      import com.alibaba.dubbo.demo.DemoService;

      public class Consumer {
      public static void main(String[] args) {
      //测试常规服务
      ClassPathXmlApplicationContext context =
      new ClassPathXmlApplicationContext(“consumer.xml”);
      context.start();
      System.err.println(“consumer start”);
      DemoService demoService = context.getBean(DemoService.class);
      System.err.println(“consumer”);
      System.out.println(demoService.getPermissions(1L));
      }
      }

    • 在dubbo-consumer项目的resource目录下,创建consumer.xml文件和log4j.xml文件,代码如下:
      consumer.xml:







    log4j.xml:

    
    
    
        
            
                
            
        
        
            
            
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • dubbo-consmuer的目录结构如下:
      这里写图片描述
    • 项目搭建完毕
    • 为项目添加dubbo.xsd文件,Window=》Preferances
      这里写图片描述
      这里写图片描述
    • 选择之前下载的dubbo.xsd文件,点OK完成。
    • 最后统一下各个项目的jre版本和编译的版本。
      这里写图片描述
      这里写图片描述
      这里写图片描述

    测试

    • 打开下载解压的zookeeper目录下的bin,并双击zkServer.cmd。
      这里写图片描述

    • 回到eclipse中的dubbo-provider项目,打开provider.java文件,右键run as =》java application
      这里写图片描述

    • 如果见到如下打印结果,表示成功。
      这里写图片描述

    • 然后打开dubbo-consumer项目下的consumer.java文件,右键run as =》java application

    • 如果见到如下打印结果,表示成功。
      这里写图片描述
      这里写图片描述

    • 在zkServer.cmd窗口能见到provider文件和consumer文件运行之后的一些链接信息
      这里写图片描述
      这里写图片描述

    • 如果在eclipse里关闭运行的进程,在zkServer.cmd窗口也能看到关闭信息。

      这里写图片描述


  • 相关阅读:
    单片机常见的屏幕驱动移植
    hooks 的定义
    信息系统项目管理师第四版:第5章 信息系统工程
    用人话讲解深度学习中CUDA,cudatookit,cudnn和pytorch的关系
    IDEA 2021.3.3最新激活破解教程(可激活至2099年,亲测有效)
    Hugging Face 分词器新增聊天模板属性
    金色年华里的爱之旅-无忧交友
    vue-awesome-swiper导航内容(横向滚动条)与内容是联动的,导航内容始终在可视区域内
    工作中规范使用Java集合
    Flutter 必须知道的布局规则
  • 原文地址:https://blog.csdn.net/Bejpse/article/details/126327875