一、本文目的
    通过Dubbo的官方Demo介绍,学会搭建一个简单的Dubbo程序,包括服务端、客户端、接口等。

二、Demo概况
     1、Demo分为三个项目
            a) dubbo-demo-api:服务接口,服务端和客户端都需要引用
b)dubbo-demo-provider:包含对服务接口的引用和实现
c)dubbo-demo-consumer:包含对服务接口的引用和使用
2、Demo三个项目的父项目是:dubbo-demo

三、Demo引用的Jar包说明
  1. JDK:1.6
  2. Dubbo版2号:2.5.4-SNAPSHOT
  3. Spring版本号:3.2.16.RELEASE<
  4. ZooKeeper版本号:3.3.3
  5. Jedis版本号:2.1.0
  6. Netty版本号:3.2.5.Final
  7. 其它:参考pom.xml     https://github.com/alibaba/dubbo/blob/master/pom.xml

四、Demo代码说明
1、服务接口:dubbo-demo-api
          本项目只包含一个接口及一个接口方法
1
2
3
4
5
6
7
package com.alibaba.dubbo.demo;
 
public interface DemoService {
 
    String sayHello(String name);
 
}

    2、服务实现:dubbo-demo-provider

a) 服务端包含了对dubbo-demo-api的引用及实现

1
2
3
4
5
<dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo-demo-api</artifactId>
        <version>${project.parent.version}</version>
    </dependency>

b) 配置文件(dubbo-demo-provider.xml

其中<dubbo:servcie> 定义一个对外提供的接口,通过ref关联到具体的实现代码

1
2
3
4
5
6
7
8
9
10
11
     
    <bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl" />
     
    <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" />
     
</beans>

c) 实现代码(DemoServiceImpl)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.alibaba.dubbo.demo.provider;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
import com.alibaba.dubbo.demo.DemoService;
import com.alibaba.dubbo.rpc.RpcContext;
 
public class DemoServiceImpl implements DemoService {
 
    public String sayHello(String name) {
        System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
        return "Hello " + name + ", response form provider: " + RpcContext.getContext().getLocalAddress();
    }
     
}

    3、服务消费:dubbo-demo-consumer

  a) 消费端也包含了对dubbo-demo-api的引用
1
2
3
4
5
<dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo-demo-api</artifactId>
        <version>${project.parent.version}</version>
    </dependency>

b) 配置文件(dubbo-demo-consumer.xml)

通过<dubbo:reference>引用一个服务接口,客户端使用远程接口方法就和调用本地方法一致

1
2
3
4
5
6
7
8
9

c) 消费端调用代码:DemoAction.java

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
package com.alibaba.dubbo.demo.consumer;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
import com.alibaba.dubbo.demo.DemoService;
 
public class DemoAction {
     
    private DemoService demoService;
 
    public void setDemoService(DemoService demoService) {
        this.demoService = demoService;
    }
 
    public void start() throws Exception {
        for (int i = 0; i < Integer.MAX_VALUE; i ++) {
            try {
                String hello = demoService.sayHello("world" + i);
                System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] " + hello);
            } catch (Exception e) {
                e.printStackTrace();
            }
            Thread.sleep(2000);
        }
    }
 
}






Dubbo系列(3)_官方Demo说明的更多相关文章

  1. Dubbo系列(1)_背景介绍和基本情况

    一.本文目的         主要介绍Dubbo的产生背景和需要解决的问题 二.产生背景         随着大数据量.高并发的互联网应用越来越多,单机系统已经无法满足系统的需要.通过SOA搭建一个分 ...

  2. Dubbo系列_概述

    一.本文目的         学习使用Dubbo也有一段时间了,准备写一个系列文章介绍Dubbo的相关知识和使用,供自己以后回顾和他人学习.有兴趣的同学可以加入群:74085440一起探讨 二.书写计 ...

  3. Qt5官方demo分析集11——Qt Quick Particles Examples - Affectors

    在这个系列中的所有文章都可以在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 接上文Qt5官方demo解析集10--Qt ...

  4. Qt5官方demo分析集29——Extending QML - Property Value Source Example

    此系列的所有文章都可以在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 接上文Qt5官方demo解析集28--Extend ...

  5. RobotFramework 官方demo Quick Start Guide rst配置文件分析

    RobotFramework官方demo Quick Start Guide rst配置文件分析   by:授客 QQ:1033553122     博客:http://blog.sina.com.c ...

  6. RobotFramework RobotFramework官方demo Quick Start Guide浅析

    RobotFramework官方demo Quick Start Guide浅析   by:授客 QQ:1033553122     博客:http://blog.sina.com.cn/ishouk ...

  7. dubbo系列四、dubbo服务暴露过程源码解析

    一.代码准备 1.示例代码 参考dubbo系列二.dubbo+zookeeper+dubboadmin分布式服务框架搭建(windows平台) 2.简单了解下spring自定义标签 https://w ...

  8. Qt5官方demo解析集30——Extending QML - Binding Example

    本系列全部文章能够在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 接上文Qt5官方demo解析集29--Extendin ...

  9. Qt5官方demo解析集13——Qt Quick Particles Examples - Image Particles

    本系列全部文章能够在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 接上文 Qt5官方demo解析集12--Qt Quic ...

随机推荐

  1. 深入理解FTP协议

    文件传输协议FTP(File Transfer Protocol)是因特网中使用最广泛的文件传输协议.FTP使用交互式的访问,允许客户指定文件的类型和格式(如指明是否使用ASCII码),并允许文件具有 ...

  2. AC日记——字符串最大跨距 openjudge 1.7 26

    26:字符串最大跨距 总时间限制:  1000ms 内存限制:  65536kB 描述 有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10.想检测S1和S2是否同时在S中 ...

  3. java 25 - 5 网络编程之多线程实现聊天室

    平时聊天都是在同一个窗口的,所以,这个窗口同时实现发送数据和接收数据,这时就需要多线程实现. 建立一个类: 把聊天的发送端和接收端放在同一个类,启动一个窗口 public class CharRoom ...

  4. 如何调试shell脚本

    今天看shell脚本攻略的时候,看见这个方法,感觉还是不错的 #!/bin/bash function DEBUG(){ [[ $_DEBUG == 'on' ]] && $@ || ...

  5. Spring的反射机制和依赖注入

    我们知道,Spring中大量使用了反射机制,那么究竟是什么地方使用了呢? spring的一大核心概念是注入, 但是,这存在的一个前提就是类是由spring管理起来的. 反射是根据className生成 ...

  6. SQL Server 用SSMS查看依赖关系有时候不准确,改用代码查

    SQL Server 用SSMS查看依赖关系有时候不准确,明明某个sp中有用到表tohen,查看表tohen的依赖关系的时候,却看不到这个sp 用代码查看方式如下: --依赖于表tohen的对象 SE ...

  7. intellij idea 高级用法之:集成JIRA、UML类图插件、集成SSH、集成FTP、Database管理

    之前写过一篇IntelliJ IDEA 13试用手记,idea还有很多高大上的功能,易用性几乎能与vs.net媲美,反正我自从改用idea后,再也没开过eclipse,今天来看几个高级功能: 一.与J ...

  8. Spring与Mybatis整合的MapperScannerConfigurer处理过程源码分析

    前言 本文将分析mybatis与spring整合的MapperScannerConfigurer的底层原理,之前已经分析过java中实现动态,可以使用jdk自带api和cglib第三方库生成动态代理. ...

  9. C#基础之IEnumerable

    1.IEnumerable的作用 在使用Linq查询数据时经常以IEnumerable<T>来作为数据查询返回对象,在使用foreach进行遍历时需要该对象实现IEnumerable接口, ...

  10. ASP.NET MVC3入门教程之ajax交互

    本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=100&extra=page%3D1 随着web技术的不断发展与 ...