文档章节

dubbo client server demo

M
 MackCC_Sun
发布于 2015/10/29 11:43
字数 909
阅读 284
收藏 2
个客户端。

    服务端

    服务端maven父工程

    首先搭建一个maven父工程,引入dubbo和spring的依赖,dubbo可以和spring无缝集成。
[html] view plain copy
  1. <properties>  
  2.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  3.         <v.dubbo.ext>1.3.0-SNAPSHOT</v.dubbo.ext>  
  4.         <v.spring>3.1.2.RELEASE</v.spring>  
  5.         <v.plugin.jar>2.3.1</v.plugin.jar>  
  6.     </properties>  
  7.   
  8.     <dependencies>  
  9.         <dependency>  
  10.             <groupId>com.jd.dubbo.ext</groupId>  
  11.             <artifactId>dubbo-ext-spi</artifactId>  
  12.             <version>${v.dubbo.ext}</version>  
  13.         </dependency>  
  14.         <dependency>  
  15.             <groupId>org.springframework</groupId>  
  16.             <artifactId>spring-core</artifactId>  
  17.             <version>${v.spring}</version>  
  18.         </dependency>  
  19.         <dependency>  
  20.             <groupId>org.springframework</groupId>  
  21.             <artifactId>spring-beans</artifactId>  
  22.             <version>${v.spring}</version>  
  23.         </dependency>  
  24.         <dependency>  
  25.             <groupId>org.springframework</groupId>  
  26.             <artifactId>spring-context</artifactId>  
  27.             <version>${v.spring}</version>  
  28.         </dependency>  
  29.         <dependency>  
  30.             <groupId>org.springframework</groupId>  
  31.             <artifactId>spring-context-support</artifactId>  
  32.             <version>${v.spring}</version>  
  33.         </dependency>  
  34.         <dependency>  
  35.             <groupId>org.springframework</groupId>  
  36.             <artifactId>spring-tx</artifactId>  
  37.             <version>${v.spring}</version>  
  38.         </dependency>  
  39.         <dependency>  
  40.             <groupId>org.springframework</groupId>  
  41.             <artifactId>spring-orm</artifactId>  
  42.             <version>${v.spring}</version>  
  43.         </dependency>  
  44.         <dependency>  
  45.             <groupId>org.springframework</groupId>  
  46.             <artifactId>spring-web</artifactId>  
  47.             <version>${v.spring}</version>  
  48.         </dependency>  
  49.     </dependencies>  
    这些都是开发dubbo服务端必须要用的依赖包。

    服务端接口子模块

    这个模块负责向第三方应用暴露接口的定义,实现在其它的包里。third party 应用需要引入这个包,但无法看到接口的实现。
    这个模块十分简单,只需提供接口定义。
[java] view plain copy
  1. package org.dubbo.server.api;  
  2.   
  3. public interface DemoService {  
  4.      public String sayHello(String name);    
  5. }  

    服务端接口实现子模块

    重新创建一个maven module,这个模块负责实现上面模块定义的接口。
    实现如下:
[java] view plain copy
  1. package org.dubbo.server.service;  
  2.   
  3. import org.dubbo.server.api.DemoService;  
  4. import org.springframework.stereotype.Service;  
  5.   
  6. @Service ("demoService")  
  7. public class DemoServiceImpl implements DemoService{  
  8.      public String sayHello(String name) {    
  9.          return "Hello " + name;    
  10.   }    
  11. }  
    同时服务端应该作为一个独立的应用部署起来,处理客户端的请求。
[java] view plain copy
  1. package org.dubbo.server.service;  
  2.   
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  4.   
  5.   
  6. public class DubboServer {  
  7.     public static void main(String[] args) throws Exception {    
  8.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});    
  9.         context.start();    
  10.   
  11.         System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟    
  12.     }    
  13. }  

    好,服务端跑起来了。

    服务端dubbo配置

[html] view plain copy
  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" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  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.         http://www.springframework.org/schema/context   
  10.         http://www.springframework.org/schema/context/spring-context.xsd"  
  11.         default-autowire="byName">  
  12.           
  13.     <context:component-scan base-package="org.dubbo.server.service.**" />  
  14.     <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->  
  15.     <dubbo:application name="hehe_consumer" organization="risk.im.jd.com"  
  16.         owner="lvsheng" />  
  17.   
  18.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
  19.     <dubbo:registry id="registry" address="10.28.163.15:6060" />  
  20.   
  21.     <dubbo:protocol id="protocol" name="dubbo" port="25000"  
  22.         heartbeat="0" threadpool="cached" threads="512" />  
  23.   
  24.     <dubbo:provider id="im.riskctrl.dubbo.provider" timeout="5000"  
  25.         retries="5" loadbalance="roundrobin" cluster="failover" registry="registry">  
  26.     </dubbo:provider>  
  27.   
  28.     <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->  
  29.     <dubbo:service interface="org.dubbo.server.api.DemoService" ref="demoService"  
  30.         provider="im.riskctrl.dubbo.provider" >  
  31.     </dubbo:service>  
  32.   
  33. </beans>    

    注册中心

    dubbo注册中心我使用的是dubbo官网的注册中心demo。

    客户端

    客户端简单的搭建一个普通的maven工程就行了。pom依赖跟服务端的一致。
    客户端的调用代码如下:
[java] view plain copy
  1. package com.jd.lvsheng.dubbo.client.test;  
  2.   
  3. import org.dubbo.server.api.DemoService;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5. import org.springframework.stereotype.Service;  
  6.   
  7. @Service ("dubboConsumer")  
  8. public class DubboConsumer {  
  9.   
  10.     public static void main(String[] args) throws Exception {  
  11.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });  
  12.         context.start();  
  13.         DemoService demoService = context.getBean("demoService", DemoService.class);  
  14.         System.out.println(demoService.sayHello("aaa"));  
  15.         System.in.read();  
  16.     }  
  17. }  
    客户端的spring配置如下:
[html] view plain copy
  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" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  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.         http://www.springframework.org/schema/context   
  10.         http://www.springframework.org/schema/context/spring-context.xsd"  
  11.         default-autowire="byName">  
  12.           
  13.     <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->  
  14.     <dubbo:application name="dubbo_consumer" organization="risk.im.com"  
  15.         owner="lvsheng" />  
  16.   
  17.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
  18.     <dubbo:registry id="registry" address="10.28.163.15:6060" />  
  19.   
  20.     <dubbo:protocol id="protocol" name="dubbo" port="25001"  
  21.         heartbeat="0" threadpool="cached" threads="512" />  
  22.   
  23.     <dubbo:provider id="im.riskctrl.dubbo.provider" timeout="5000"  
  24.         retries="5" loadbalance="roundrobin" cluster="failover" registry="registry">  
  25.     </dubbo:provider>  
  26.   
  27.     <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->  
  28.     <dubbo:reference interface="org.dubbo.server.api.DemoService" id="demoService" registry="registry">  
  29.     </dubbo:reference>  
  30.   
  31. </beans>    
    整个工程是可以运行的。

本文转载自:

M
粉丝 4
博文 158
码字总数 29095
作品 0
朝阳
技术主管
私信 提问
当DUBBO遇上Arthas - 排查问题的实践

Apache Dubbo是Alibaba开源的高性能RPC框架,在国内有非常多的用户。 Github: https://github.com/apache/incubator-dubbo 文档:http://dubbo.incubator.apache.org/zh-cn/ Arthas是Alibaba......

hengyunabc
2018/12/07
67
1
当Dubbo遇上Arthas - 排查问题的实践

Apache Dubbo是Alibaba开源的高性能RPC框架,在国内有非常多的用户。 Github: https://github.com/apache/incubator-dubbo 文档:http://dubbo.incubator.apache.org/zh-cn/ Arthas是Alibaba......

横云断岭
2018/12/10
0
0
Netty-在-Dubbo-中如何应用

前言 众所周知,国内知名框架 Dubbo 底层使用的是 Netty 作为网络通信,那么内部到底是如何使用的呢?今天我们就来一探究竟。 1. dubbo 的 Consumer 消费者如何使用 Netty 注意:此次代码使用...

Java小铺
2018/08/14
0
0
dubbo源码分析系列(1)扩展机制的实现

1 系列目录 - dubbo源码分析系列(1)扩展机制的实现- dubbo源码分析系列(2)服务的发布- dubbo源码分析系列(3)服务的引用- dubbo源码分析系列(4)dubbo通信设计 2 SPI扩展机制 站在一个...

乒乓狂魔
2015/09/21
13.4K
5
dubbox功能演示

dubbox功能演示 通过以下内容介绍dubbox框架。 dubbo是什么 dubbox又是什么 dubbo能做什么 dubbo框架设计 dubbo服务调用过程 1. dubbo是什么 Dubbo是一个分布式服务框架,致力于提供高性能和...

zzuqiang
2016/10/24
571
0

没有更多内容

加载失败,请刷新页面

加载更多

移动开发中的 Web:WebView、WebKit、JSCore、Web 优化、热修复、跨平台、Native、Hybrid……

移动开发领域近年来已经逐渐告别了野蛮生长的时期,进入了相对成熟的时代。而一直以来 Native 和 Web 的争论从未停止,通过开发者孜孜不倦的努力,Web 的效率和 Native 的体验也一直在寻求着...

编辑部的故事
27分钟前
14
0
MySQL8.0.17 - Multi-Valued Indexes 简述

本文主要简单介绍下8.0.17新引入的功能multi-valued index, 顾名思义,索引上对于同一个Primary key, 可以建立多个二级索引项,实际上已经对array类型的基础功能做了支持 (感觉官方未来一定...

阿里云官方博客
今天
11
0
make4.1降级 make-3.81、2错误

在编译 make-3.82 的时候出现如下错误提示 glob/glob.c:xxx: undefined reference to `__alloca'` 修改 /glob/glob.c // #if !defined __alloca && !defined __GNU_LIBRARY__ # ifdef __GNUC......

Domineering
今天
18
0
Rainbond集群的安装和运维的原理

本文将解读Rainbond集群的安装和运维的原理,使用户基本了解Rainbond的安装机制和运维重点,便于用户搭建大型Rainbond集群。 1.Rainbond集群节点概述 1.1 节点分类 属性 类型 说明 manage 管...

好雨云帮
今天
11
0
好程序员大数据学习路线分享UDF函数

1.为什么需要UDF? 1)、因为内部函数没法满足需求。 2)、hive它本身就是一个灵活框架,允许用自定义模块功能,如可以自定义UDF、serde、输入输出等。 2.UDF是什么? UDF:user difine fun...

好程序员官方
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部