一、本文目的
    通过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. NOIP2010提高组 机器翻译 -SilverN

    /**/ #include<iostream> #include<cstdio> #include<cmath> #include<cstring> # ...

  2. 123——Appium Girls活动

    有感于Ruby Girls和Python Girls,在15年就想组织一次移动测试的妹子活动,框架选择Appium, 从15年夏天开始准备,申请Google的会议室,招募教练,开放报名,审核报名,到正 ...

  3. 2015 Selenium大会

    9月8号到10号三天在俄勒冈州的波特兰召开了Selenium Conference 2015,分享的演讲很多,视频也放出来了,做了下搬运工,传到优酷 简介: A conference that bri ...

  4. [No000063]Python格式化输出

    python print格式化输出. 1. 打印字符串 print ("His name is %s"%("Aviad")) 效果: 2.打印整数 print ...

  5. ES5特性之Object.freeze

    Object.freeze方法比Object.seal方法更严格,不仅不能扩展新对象和不可重新配置属性的特性,还不能改变对象属性的值writable(不可写)

  6. IE11下不能引入外部css的解决方法

    原: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  7. 独立成分分析(ICA)在fMRI数据处理时timecourse的理解

    来源: http://blog.sciencenet.cn/blog-479412-434990.html   在处理fMRI数据时,使用空间ICA的方法.将一个四维的fMRI数据分解为空间patte ...

  8. MongoDB JAVA API Filters

    Filters 该过滤器类为所有的MongoDB的查询操作静态工厂方法.每个方法返回BSON类型,又可以传递给期望一个查询过滤器的任何方法的一个实例. eq:匹配等于指定值的值.gt:匹配大于指定值的 ...

  9. QT 文件操作

    QT提供了QFile类用于文件读写 QFile可以读写文本文件,也可以读写二进制文件 #include "widget.h" #include <QGridLayout> ...

  10. httpserver

    改了下 # -*- coding:utf-8 -*- from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler HOST = &quo ...