1、接口定义

package com.dubbo.inter;

public interface UserApi {
        String sayHello(String name);  
}
2、接口实现类定义

package com.dubbo.inter;

public class UserApiImpl implements UserApi{

@Override
    public String sayHello(String name) {
          return "用户名:" + name;  
    }

}

3、提供者服务启动测试类

package com.rmispring.test;

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(new String[]{"applicationContext-dubbo.xml"});
        context.start();
         System.in.read(); //阻塞
    }

}

4、消费者

package com.rmispring.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dubbo.inter.UserApi;

public class Consumer {
    public static void main(String[] args) {  
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext-dubbo-client.xml" });  
        context.start();  
        
        UserApi demoService = (UserApi) context.getBean("userApi");  
        System.out.println(demoService.sayHello("消费者"));   
    }
}

5、提供者配置文件applicationContext-dubbo.xml内容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://code.alibabatech.com/schema/dubbo  
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!-- 服务提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="server_provider" />
    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry id="bb" address="zookeeper://127.0.0.1:2181" group="test" />
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!-- 声明需要暴露的服务接口 interface -->
    <bean id="userApiImpl" class="com.dubbo.inter.UserApiImpl" />

<!-- 下面的编号对应 applicationContext-dubbo-client.xml中相应编号-->
    <!--编号001 测试成功 推荐使用-->
     <dubbo:service interface="com.dubbo.inter.UserApi" ref="userApiImpl" registry="bb" group="test"/> 
    <!--编号002 测试失败(没有分组而服务端定义了分组,没有提供者)-->
     <!-- <dubbo:service interface="com.dubbo.inter.UserApi" ref="userApiImpl" registry="bb" group="test"/>  -->
     <!--编号003 测试失败( No provider available for the service com.dubbo.inter.UserApi)-->
    <!--   <dubbo:service interface="com.dubbo.inter.UserApi" ref="userApiImpl" registry="bb" group="test"/>  -->
    
    
    <!--编号004测试成功 -->
    <!--  <dubbo:service interface="com.dubbo.inter.UserApi" ref="userApiImpl"/> -->
     <!--编号005测试成功 -->
    <!--   <dubbo:service interface="com.dubbo.inter.UserApi" ref="userApiImpl"/>  -->
     <!--编号006测试成功 (No provider available for the service test/com.dubbo.inter.UserApi)-->
    <!-- <dubbo:service interface="com.dubbo.inter.UserApi" ref="userApiImpl"/>  -->
    
    
     <!--编号007测试成功 -->
     <!--  <dubbo:service interface="com.dubbo.inter.UserApi" ref="userApiImpl" registry="bb"/> -->
       <!--编号008测试成功 -->
      <!--  <dubbo:service interface="com.dubbo.inter.UserApi" ref="userApiImpl" registry="bb"/> -->
        <!--编号009测试失败-->
     <!-- <dubbo:service interface="com.dubbo.inter.UserApi" ref="userApiImpl" registry="bb"/> -->
</beans>

6、消费者配置文件applicationContext-dubbo-client.xml内容:

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
    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">  
    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->  
    <dubbo:application name="wlclient_consumer" />  
    <!-- 使用zookeeper注册中心暴露服务地址 -->  
    <dubbo:registry id="aa" address="zookeeper://127.0.0.1:2181" group="test" />  
      
      
      
      <!-- 下面的编号对应 applicationContext-dubbo.xml中相应编号-->
      <!--编号001 测试成功 推荐使用-->
     <dubbo:reference id="userApi" interface="com.dubbo.inter.UserApi" registry="aa" group="test"/>
      <!--编号002 测试失败(没有分组而服务端定义了分组,没有提供者)-->
      <!-- <dubbo:reference id="userApi" interface="com.dubbo.inter.UserApi" registry="aa"/>  -->
      <!--编号003 测试失败( No provider available for the service com.dubbo.inter.UserApi)-->
      <!--  <dubbo:reference id="userApi" interface="com.dubbo.inter.UserApi"/> -->
      
      
      <!--编号004测试成功 -->
      <!--  <dubbo:reference id="userApi" interface="com.dubbo.inter.UserApi" registry="aa"/>  -->
       <!--编号005测试成功 -->
   <!--   <dubbo:reference id="userApi" interface="com.dubbo.inter.UserApi"/>   -->
    <!--编号006测试失败(No provider available for the service test/com.dubbo.inter.UserApi)-->
     <!--  <dubbo:reference id="userApi" interface="com.dubbo.inter.UserApi" registry="aa" group="test"/>   -->
     
     
     <!--编号007测试成功 -->
      <!--     <dubbo:reference id="userApi" interface="com.dubbo.inter.UserApi"/>   -->
       <!--编号008测试成功 -->
      <!--  <dubbo:reference id="userApi" interface="com.dubbo.inter.UserApi" registry="aa"/>   -->
        <!--编号009测试失败(No provider available for the service test/com.dubbo.inter.UserApi)-->
        <!--  <dubbo:reference id="userApi" interface="com.dubbo.inter.UserApi" registry="aa" group="test"/>   -->
</beans>

备注:
zookeeper保存了服务提供方和服务消费方的的URI(dubbo自定义的一种URI),服务消费方找到zookeeper,向zookeeper要到服务提供方的URI,然后就找到提供方,并调用提供方的服务。
解耦,分布式,failover。

Dubbo简单例子一相关推荐

  1. webpack入门之简单例子跑起来

    webpack入门之简单例子跑起来 webpack介绍 Webpack是当下最热门的前端资源模块化管理和打包工具,它可以将很多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源,还可以将按需加载 ...

  2. 图片上传(加水印、缩略图、远程保存)的简单例子

    图片上传(加水印.缩略图.远程保存)的简单例子(应用于51aspx.com) 该源码下载地址:http://51aspx.com/CV/ImageUpload 今天看到xiongeee发的文章使用使用 ...

  3. java hashtable import,Hashtable的一个简单例子

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 以下是关于Hashtable的简单例子,谁知道别的遍历Hashtable的方法,请回复! package no1; import java.util.En ...

  4. SAP MM采购定价过程的一个简单例子

    SAP MM采购定价过程的一个简单例子 本文以一个简单的例子阐述了SAP MM模块中采购定价的基本原理.本例中,假定采购订单里输入的是含税采购价,然后系统自动计算出物料最终的采购价格(含税价-税额=采 ...

  5. .net中使用反射的简单例子

    说明:由于工作原因,本人使用反射的机会不是很多,所以没有必要为了炫耀技术而使用这种技术,不过今天有人问到这方面的问题,所以做了一个简单例子,供初学者参考,代码如下: using System; usi ...

  6. linux下Makefile中包含有shared library动态链接库文件时候的简单例子

    如果不知道什么是makefile,可以首先看我的另一篇博客: linux下Makefile的简单例子及解释 http://www.cnblogs.com/lihaozy/archive/2012/08 ...

  7. java 国际化例子_JavaSE 国际化 简单例子

    ①在src下添加两个文件: base_zh_CN.properties Test=\u8fd9\u662f\u4e2d\u6587 base_en_US.properties Test=english ...

  8. 6翻了C语言,《嗨翻C语言》随书练习六 6章 二叉树简单例子

    二叉树简单例子/* <嗨翻C语言>随书练习 6章    2016-12-06 xiousheng@126.com  二叉树例子,警务罪犯判断档案系统,哈哈 书中可以专家系统例子 */ #i ...

  9. QT 信号与槽 最简单例子

    QT  信号与槽 最简单例子 main.cpp 和 my_head.h源码: [cpp] view plaincopy #ifndef MY_HEAD_H #define MY_HEAD_H #inc ...

最新文章

  1. 使用在线软件合并pdf论文文件安全吗?不妨使用简单的python代码
  2. 复旦计算机学院徐老师,复旦大学信息科学与技术学院徐跃东副研究员到课题组访问交流...
  3. Python Pickle反序列化漏洞
  4. python-类方法和属性
  5. 编程语言中,差、交、并、自然连接、选择、投影、笛卡尔积分别都是什么运算...
  6. ftp 上传档案到主机 OMVS
  7. php的弹出窗口,弹出窗口 PHP
  8. 中的live_张杰两首歌曲连唱彰显LIVE实力 青春演说温暖人心
  9. OBS教程:3分钟学会直播推流与视频录制
  10. 搜集博科光纤存储交换机的日志
  11. 矩阵连乘c语言实验报告,矩阵连乘实验报告.docx
  12. 详解MPO/MTP主干光纤跳线规格参数、MPO连接说明、MPO极性分类
  13. Redis 报错: WRONGTYPE Operation against a key holding the wrong kind of value
  14. 第十二周项目四----利用遍历思想求解图问题之6最短路径
  15. 菜鸟应用-手机应用在线制作平台,手机应用,APP开发,手机软件开发
  16. 直观上理解PCA中特征值和特征向量
  17. 浙大版《C语言程序设计实验与习题指导(第4版)》题目集-编程题-实验1-1-Hello World!
  18. linux下top指令参数详解及用法
  19. Jmeter:Generate HTML report 导出HTML测试报告
  20. wkhtmltopdf 网页转换为pdf

热门文章

  1. php安装oci8,php5安装oci8
  2. pymongo模块详解(含官方文档翻译)
  3. 1664_MIT 6.828 JOS页管理的相关行为实现
  4. PSP用DOS模拟器DOSBOX 0.71版发布
  5. 《毛毛虫团队》第七次作业:团队项目设计完善编码
  6. compileSdkVersion、buildToolsVersion、minSdkVersion、targetSdkVersion
  7. python算法工程师需要学什么_成为一名 AI 算法工程师,你需要具备哪些能力?...
  8. Metabase学习教程:入门-4
  9. 【MySql】MySql事务隔离级别
  10. 如何用通达信编写均线斜率大于45度的公式