文档章节

spring + dubbo 学习

m
 modprobe
发布于 2016/11/08 09:57
字数 787
阅读 10
收藏 0

  新启动的项目中可能会使用到dubbo,因为之前并没有接触过,所以先小试一下

  示例运行环境准备:OS X 10.10.5 + java version "1.8.0_40"

  zookeeper 和 dubbo-admin运行在虚拟机上,环境为Centos7.0 + java version "1.8.0_73"

  项目使用gradlle管理

              

  其中dubbo-demo未项目,里面新建了两个module,api为服务提供方,console为服务消费方。注意,需要在console module中添加api 的module依赖

  api中代码如下:

  DemoService

package com.dh.demo.service;

public interface DemoService {
    public String hello(String name);
}

 

  DemoServiceImpl

package com.dh.demo.service.impl;

import com.dh.demo.service.DemoService;

public class DemoServiceImpl implements DemoService {
    public String hello(String name) {
        return "hello " + name;
    }
}

 

服务端spring配置文件dubbo-provider.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="dubbo-demo-api"/>

    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://vm:2181"/>

    <bean id="demoService" class="com.dh.demo.service.impl.DemoServiceImpl"/>

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.dh.demo.service.DemoService" ref="demoService"/>

</beans>

 

启动api的测试代码如下:

package com.dh.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

public class Provider {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("file:/xxx/dubbo-demo/api/src/resources/dubbo-provider.xml");
        context.start();
        try {
            System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

  服务提供者的配置到此结束。

  下面是消费者的配置和代码

  spring配置文件dubbo-consumer.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="dubbo-demo-console"></dubbo:application>
    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://vm:2181"/>

    <!-- 要引用的服务 -->
    <dubbo:reference interface="com.dh.demo.service.DemoService" id="demoService"></dubbo:reference>
</beans>

 

  启动消费者测试的代码如下

  Consumer:

package com.dh.test;

import com.dh.demo.service.DemoService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

public class Consumer {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("file:/xxx/dubbo-demo/console/src/resources/dubbo-consumer.xml");
        context.start();
        DemoService testRegistryService = (DemoService)context.getBean("demoService"); // 获取远程服务代理
        String hello = testRegistryService.hello("world");
        System.out.println(hello);
        try {
            System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

  先运行提供者测试代码,再运行消费者代码。可以看到下面输出  

  

  至此测试成功

 

  如果运行了dubbo-admin的话可以进去后可以查看和管理服务

  这是提供者:

  

  消费者:

  

 

   有些童鞋可能不知道怎么运行dubbo-demo

 看dubbo的github主页就行

 如果再jdk8的环境下运行可能在启动的时候会遇到如下问题

Bean property 'URIType' is not writable or has 。。。。。后面省略

 解决方式参考:https://github.com/alibaba/dubbo/issues/50 中 stirp 的方式即可 

 

 注:dubbo-demo的build.gradle内容如下

group 'com.dh'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.5


repositories {

    maven { url "http://repo.maven.apache.org/maven2" }
}
dependencies {
    compile(group: 'com.alibaba', name: 'dubbo', version: '2.5.3') {
        exclude(module: 'spring')
    }
    compile group: 'org.apache.zookeeper', name: 'zookeeper', version: '3.4.6'
    compile group: 'com.google.zxing', name: 'core', version: '3.1.0'
    compile group: 'com.google.code.gson', name: 'gson', version: '2.3.1'
    compile group: 'io.netty', name: 'netty', version: '4.0.0.Alpha8'
    compile group: 'javax.servlet', name: 'servlet-api', version: '2.5'
    compile group: 'org.springframework', name: 'spring-context-support', version: '4.1.3.RELEASE'
    compile group: 'org.springframework', name: 'spring-web', version: '4.1.3.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc', version: '4.1.3.RELEASE'
    compile group: 'com.alibaba', name: 'fastjson', version: '1.2.7'
    compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.5'
    compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: '2.6.3'
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.6.3'
    compile group: 'com.thoughtworks.xstream', name: 'xstream', version: '1.4.2'
    compile group: 'org.jdom', name: 'jdom', version: '1.1.3'
    compile group: 'com.github.sgroschupf', name: 'zkclient', version: '0.1'
}

 

  

本文转载自:http://www.cnblogs.com/modprobe/p/5412400.html

共有 人打赏支持
m
粉丝 1
博文 35
码字总数 0
作品 0
轻松理解Dubbo分布式服务框架

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

别打我会飞
10/19
0
0
微服务选择Spring Cloud还是Dubbo?

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 在阿里巴巴的生态中,微服务逐渐成为主要的服务形态,伴随着容器...

异步社区
04/27
0
0
spring boot + dubbo + zookeeper 搭建及问题解决

Dubbo 是一款高性能Java RPC框架,现在有很多公司都在使用,鉴于技多不压身的原则,折腾一下这玩意 简介 spring boot 是当前比较流行的开发工具组合框架,他并不是一个新框架;由于它集合了很多...

zerokb-小浪
09/30
0
0
dubbo学习笔记 第四章构建dubbo的web应用 上

上一章节介绍了dubbo的开源项目自带的例子,但是这些例子都是直接运行main方法来跑代码,实际应用中我们更多地是需要使用web应用来支撑,接下来介绍一下如何搭建dubbo的web应用,我们将用的s...

sesamefox
2017/10/26
0
0
Dubbo进阶(十一)—— Dubbo与DubboX区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunhuaqiang1/article/details/83097067 Dubbo进阶(十一)—— Dubbo与DubboX区别 前世今生 Dubbo源于阿里的...

孙华强
10/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux 系统的运行级别

运行级别 运行级别 | 含义 0 关机 1 单用户模式,可以想象为windows 的安全模式,主要用于修复系统 2 不完全的命令模式,不含NFS服务 3 完全的命令行模式,就是标准的字符界面 4 系统保留 5 ...

Linux学习笔记
今天
1
0
学习设计模式——命令模式

任何模式的出现,都是为了解决一些特定的场景的耦合问题,以达到对修改封闭,对扩展开放的效果。命令模式也不例外: 命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。 解决了这...

江左煤郎
今天
2
0
字典树收集(非线程安全,后续做线程安全改进)

将500W个单词放进一个数据结构进行存储,然后进行快速比对,判断一个单词是不是这个500W单词之中的;来了一个单词前缀,给出500w个单词中有多少个单词是该前缀. 1、这个需求首先需要设计好数据结...

算法之名
昨天
12
0
GRASP设计模式

此文参考了这篇博客,建议读者阅读原文。 面向对象(Object-Oriented,OO)是当下软件开发的主流方法。在OO分析与设计中,我们首先从问题领域中抽象出领域模型,在领域模型中以适当的粒度归纳...

克虏伯
昨天
0
0
Coding and Paper Letter(四十)

资源整理。 1 Coding: 1.Tomislav Hengl撰写的非官方作者指南:Michael Gould•Wouter Gerritsma。 UnofficialGuide4Authors 2.R语言包rwrfhydro,社区贡献的工具箱,用于管理,分析和可视化...

胖胖雕
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部