DUBBO入门

官方文档:https://dubbo.gitbooks.io/dubbo-user-book/content/preface/

服务提供者

项目结构:



pom文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.xh.dubbo.demon</groupId>
  6. <artifactId>demon_provider</artifactId>
  7. <packaging>pom</packaging>
  8. <version>1.0-SNAPSHOT</version>
  9. <modules>
  10. <module>demon_api</module>
  11. <module>demon_pro</module>
  12. </modules>
  13. <name>demon_provider</name>
  14. <!-- FIXME change it to the project's website -->
  15. <url>http://www.example.com</url>
  16. <properties>
  17. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  18. <maven.compiler.source>1.7</maven.compiler.source>
  19. <maven.compiler.target>1.7</maven.compiler.target>
  20. </properties>
  21. <dependencies>
  22. <dependency>
  23. <groupId>junit</groupId>
  24. <artifactId>junit</artifactId>
  25. <version>4.11</version>
  26. <scope>test</scope>
  27. </dependency>
  28. </dependencies>
  29. <dependencyManagement>
  30. <dependencies>
  31. <dependency>
  32. <groupId>com.alibaba</groupId>
  33. <artifactId>dubbo</artifactId>
  34. <version>2.6.0</version>
  35. </dependency>
  36. </dependencies>
  37. </dependencyManagement>
  38. <build>
  39. ...
  40. </build>
  41. </project>

api

接口:

  1. package com.xh.dubbo.demon.service;
  2. /**
  3. * Created by root on 4/10/18.
  4. */
  5. public interface SayHello {
  6. public String hello(String name);
  7. }

pom文件:

默认

实现

实现类:

  1. package com.xh.dubbo.demon.serviceImpl;
  2. import com.xh.dubbo.demon.service.SayHello;
  3. /**
  4. * Created by root on 4/10/18.
  5. */
  6. public class SayHelloImpl implements SayHello {
  7. @Override
  8. public String hello(String name) {
  9. return "Hello " + name;
  10. }
  11. }

启动类:

  1. package com.xh.dubbo.demon;
  2. import org.springframework.context.support.ClassPathXmlApplicationContext;
  3. import java.io.IOException;
  4. /**
  5. * Hello world!
  6. */
  7. public class App {
  8. public static void main(String[] args) throws IOException {
  9. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:provider.xml"});
  10. context.start();
  11. System.in.read(); // 按任意键退出
  12. }
  13. }

配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://code.alibabatech.com/schema/dubbo
  8. http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  9. <!-- 提供方应用信息,用于计算依赖关系 -->
  10. <dubbo:application name="hello-world-app"/>
  11. <!-- 使用multicast广播注册中心暴露服务地址 -->
  12. <dubbo:registry address="multicast://224.5.6.7:1234"/>
  13. <!-- 用dubbo协议在20880端口暴露服务 -->
  14. <dubbo:protocol name="dubbo" port="20880"/>
  15. <!-- 声明需要暴露的服务接口 -->
  16. <dubbo:service interface="com.xh.dubbo.demon.service.SayHello" ref="helloImpl"/>
  17. <!-- 和本地bean一样实现服务 -->
  18. <bean id="helloImpl" class="com.xh.dubbo.demon.serviceImpl.SayHelloImpl"/>
  19. </beans>

pom文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <parent>
  5. <artifactId>demon_provider</artifactId>
  6. <groupId>com.xh.dubbo.demon</groupId>
  7. <version>1.0-SNAPSHOT</version>
  8. </parent>
  9. <modelVersion>4.0.0</modelVersion>
  10. <artifactId>demon_pro</artifactId>
  11. <packaging>jar</packaging>
  12. <name>demon_pro</name>
  13. <!-- FIXME change it to the project's website -->
  14. <url>http://www.example.com</url>
  15. <properties>
  16. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  17. <maven.compiler.source>1.7</maven.compiler.source>
  18. <maven.compiler.target>1.7</maven.compiler.target>
  19. </properties>
  20. <dependencies>
  21. <dependency>
  22. <groupId>junit</groupId>
  23. <artifactId>junit</artifactId>
  24. <version>4.11</version>
  25. <scope>test</scope>
  26. </dependency>
  27. <dependency>
  28. <groupId>com.xh.dubbo.demon</groupId>
  29. <artifactId>demon_api</artifactId>
  30. <version>1.0-SNAPSHOT</version>
  31. </dependency>
  32. <dependency>
  33. <groupId>com.alibaba</groupId>
  34. <artifactId>dubbo</artifactId>
  35. </dependency>
  36. </dependencies>
  37. <build>
  38. ...
  39. </build>
  40. </project>

服务消费者

项目结构:

调用服务:

  1. package com.xh.dubbo.demon;
  2. import com.xh.dubbo.demon.service.SayHello;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. /**
  5. * Hello world!
  6. */
  7. public class App {
  8. public static void main(String[] args) {
  9. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:consumer.xml"});
  10. context.start();
  11. SayHello demoService = (SayHello) context.getBean("demoService"); // 获取远程服务代理
  12. String hello = demoService.hello("nana "); // 执行远程方法
  13. System.out.println(hello); // 显示调用结果
  14. }
  15. }

配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  5. 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">
  6. <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
  7. <dubbo:application name="consumer-of-helloworld-app"/>
  8. <!-- 使用multicast广播注册中心暴露发现服务地址 -->
  9. <dubbo:registry address="multicast://224.5.6.7:1234"/>
  10. <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
  11. <dubbo:reference id="demoService" interface="com.xh.dubbo.demon.service.SayHello"/>
  12. </beans>

pom文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.xh.dubbo.demon</groupId>
  6. <artifactId>demon_consumer</artifactId>
  7. <version>1.0-SNAPSHOT</version>
  8. <name>demon_consumer</name>
  9. <!-- FIXME change it to the project's website -->
  10. <url>http://www.example.com</url>
  11. <properties>
  12. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  13. <maven.compiler.source>1.7</maven.compiler.source>
  14. <maven.compiler.target>1.7</maven.compiler.target>
  15. </properties>
  16. <dependencies>
  17. <dependency>
  18. <groupId>junit</groupId>
  19. <artifactId>junit</artifactId>
  20. <version>4.11</version>
  21. <scope>test</scope>
  22. </dependency>
  23. <dependency>
  24. <groupId>com.alibaba</groupId>
  25. <artifactId>dubbo</artifactId>
  26. <version>2.6.0</version>
  27. </dependency>
  28. <dependency>
  29. <groupId>com.xh.dubbo.demon</groupId>
  30. <artifactId>demon_api</artifactId>
  31. <version>1.0-SNAPSHOT</version>
  32. </dependency>
  33. </dependencies>
  34. <build>
  35. ...
  36. </build>
  37. </project>

dubbo学习笔记1的更多相关文章

  1. 别人的dubbo学习笔记

    本文转载自:http://blog.csdn.net/tao_qq/article/details/49952229 学习dubbo,开始做一些笔记. 1> 启动dubbo-admin模块的时候 ...

  2. Dubbo学习笔记0:RPC框架Dubbo介绍

    整体来说,一个公司业务系统的演进流程基本都是从单体应用到多应用.在单体应用时,不同业务模块相互调用直接在本地JVM进程内就可以完成,而变为多个应用时,相互之间进行通信就不能简单的进行本地调用了,因为不 ...

  3. dubbo学习笔记(一)超时与重试

    dubbo提供在provider和consumer端,都提供了超时(timeout)和重试(retries)的参数配置. 配置方式 provider端在<dubbo:service>中配置 ...

  4. Dubbo学习笔记(二) Dubbo的基本配置

    Check启动检查 根据之前的学习,我们简单理解的Dubbo远程调用的基本流程,服务提供者注册到注册中心,然后服务消费者通过监听注册中心达到远程调用的目的,那么如果注册中心中没有消费者对应的接口会怎么 ...

  5. Dubbo学习笔记(一) 基础知识HelloWorld

    Dubbo是由阿里巴巴研发出的一款基于Java实现的RPC框架,现由Apache进行维护管理,笔记中使用zookeeper作为注册中心,dubbo+zookeeper环境安装教程:https://ww ...

  6. 阿里巴巴分布式服务框架dubbo学习笔记

    Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的 ...

  7. dubbo学习笔记

    一.zookeeper在Dubbo中扮演角色 流程:1.服务提供者启动时向/dubbo/com.foo.BarService/providers目录下写入URL2.服务消费者启动时订阅/dubbo/c ...

  8. Dubbo学习笔记8:Dubbo的线程模型与线程池策略

    Dubbo默认的底层网络通讯使用的是Netty,服务提供方NettyServer使用两级线程池,其中 EventLoopGroup(boss) 主要用来接受客户端的链接请求,并把接受的请求分发给 Ev ...

  9. 网易云课堂Dubbo学习笔记

    可以在这里下载dubbo的原码:https://github.com/alibaba/dubbo Dubbo架构原理:

随机推荐

  1. PHP操作cookie

    1.当只有一个参数的时候,默认是删除,响应报文里面设置了一个过去的时间 setcookie('key2'); 2.当有两个参数的时候,是设置cookie setcookie('key','value1 ...

  2. java代码的编译执行过程

  3. python金融反欺诈-项目实战

    python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...

  4. ATPCS规则

    title: ATPCS规则 tags: ARM date: 2018-10-14 17:03:23 --- ATPCS规则 ARM指令集E004armproc.chm ATPCS介绍与使用.pdf ...

  5. linux下统计文本行数的各种方法

    方法一:awk  awk '{print NR}' test1.txt | tail -n1

  6. hive metastore && hiveserver2 . jvm 配置调整优化

    hive-env.sh 添加如下,其中踩坑踩了不少. if [ "$SERVICE" = "metastore" ]; then if [ -z "$ ...

  7. 面向对象【day08】:动态导入模块(八)

    本节内容 1.概述 2.知识回顾 3.动态导入模块 一.概述 我们之前导入模块都是用import,或者from ... import ....这种模式去导入模块,那如果我们如何实现只用字符串就可以导入 ...

  8. Spring Boot笔记十:IOC控制反转

    目录 IOC控制反转和DI依赖注入 IOC实现Hello World Spring IOC容器怎么知道哪些是管理的对象? IOC容器getBean方法的三种签名 xml配置文件的import导入 @A ...

  9. python第三次周末大作业

    ''' s18第三周周末⼤作业 模拟博客园系统: 1. 启动程序, 显⽰菜单列表 菜单: 1. 登录 2. 注册 3. ⽂章 4. ⽇记 5. 退出 2. ⽤户输入选项, ⽂章和⽇记必须在登录后才可以 ...

  10. I/O exception (java.net.SocketException) caught when processing request: Connect

    Exception [一个故障引发的话题] 最近,项目中的短信模块收到一个故障日志,要求我协助调查一下: 2010-05-07 09:22:07,221 [?:?] INFO  httpclient. ...