Dubbo和Spring集成Demo

Zookeeper安装和启动

  • http://mirrors.hust.edu.cn/apache/zookeeper/下载,我的版本是 3.4.5。
  • 解压到 D:\zookeeper-3.4.5
  • 配置

    到目录conf 下创建 zoo.cfg 文件,默认就是加载这个文件,文件内容 我直接copy 的sample里面的

    zoo.cfg 的内容 
    # 心跳检查的时间 2秒 
    tickTime=2000 
    # 初始化时 连接到服务器端的间隔次数,总时间10*2=20秒 
    initLimit=10 
    # ZK Leader 和follower 之间通讯的次数,总时间5*2=10秒  
    syncLimit=5 
    # 存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置。 
    dataDir=D:\zk\tmp\zookeeper 
    # 错误日志的存放位置 
    dataLogDir=D:\zk\logs\zookeeper 
    # ZK 服务器端的监听端口 
    clientPort=2181

  • 运行

    然后 cd 到bin 目录下 执行zkServer.cmd 就启动成功了。利用jps命令行命令可以验证zookeeper是否启动成功。

Dubbo服务注册

建立WEB项目,引入相应Jar文件。

配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>dubbo-service</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            WEB-INF/dubbo-provider.xml
        </param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>
写服务类:
接口:
public interface IDemoService {

    /**
     *
     *
     * @Function: com.test.dubbo.service.IDemoService.sayHello
     * @Description:
     *
     * @param name
     * @return name string
     *
     * @version:v1.0
     * @author:cjq
     * @date:2015-4-30 下午5:45:30
     *
     * Modification History:
     * Date         Author      Version     Description
     * -----------------------------------------------------------------
     * 2015-4-30    cjq      v1.0.0         create
     */
    public String sayHello(String name);
}
实现:
public class DemoServiceImpl implements IDemoService {

    /*
     * (non-Javadoc)
     *
     * @see com.test.dubbo.service.IDemoService#sayHello(java.lang.String)
     */
    public String sayHello(String name) {
        return "Hello Dubbo,Hello " + name;
    }

}
注册服务:
新建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-service" />

    <!-- 使用multicast广播注册中心暴露服务地址 -->
    <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->

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

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

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

    <!-- 和本地bean一样实现服务 -->
    <bean id="demoService" class="com.test.dubbo.service.impl.DemoServiceImpl" />
</beans>  
部署启动服务:

Dubbo服务调用

新建WEB或者普通JAVA工程,引入Dubbo服务注册项目中的jar文件。
需要导入一个服务接口(从上个程序中导入接口的jar并且导入到此项目中。)
配置web.xml文件(和上工程一样),编写调用配置文件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-service-consumer" />

    <!-- 使用multicast广播注册中心暴露服务地址 -->
    <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->

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

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:reference id="demoService" interface="com.test.dubbo.service.IDemoService"/>

</beans>  
编写测试代码:
/**
 * Copyright (C) 2015
 *
 *
 * @className:com.test.dubbo.consumer.ConsumerTest
 * @description:TODO
 *
 * @version:v1.0.0
 * @author:cjq
 *
 * Modification History:
 * Date         Author      Version     Description
 * -----------------------------------------------------------------
 * 2015-4-30     cjq       v1.0.0        create
 *
 *
 */
package com.test.dubbo.consumer;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.dubbo.service.IDemoService;

public class ConsumerTest {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                "file:D:/javaworkspace/dubbo-service-consumer/WebContent/WEB-INF/dubbo-consumer.xml");
        context.start();
        IDemoService demoService = (IDemoService) context.getBean("demoService"); // 获取远程服务代理
        String hello = demoService.sayHello("world"); // 执行远程方法
        System.out.println(hello);
    }

}

Dubbo服务调用结果

调用测试代码,执行结果为:

Dubbo介绍结尾

如果你在做分布式系统的话,不妨用一下这个技术。
时间: 2024-10-09 00:34:13

Dubbo和Spring集成Demo的相关文章

spring集成dubbo

现在将系统按照服务划分成多个部分.代码功能分为前端和后台服务已经很流行.下面我将介绍基于maven项目结构的spring集成dubbo功能. 1.首先找zookeeper网站下载zookeeper-3.4.6.tar.gz包,将其放置到服务器上. 2.解压zookeeper包 ,安装.并将/confg/zoo.sample.cfg更名成zoo.cfg 3.修改配置文件内容,如图 4.在spring服务器端导入需要的dubbo包和zookeeper包:  <dependency>    <

集成Dubbo服务(Spring)

Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以

如何使用Dubbo服务和集成Spring

Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 1.远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及"请求-响应"模式的信息交换方式. 2.集群容错: 提供基于接口方法的透明远程过程调用,包括

Dubbo服务端/客户端demo

项目组采用分布式服务,线上有几十个应用,RPC调用完全依靠Dubbo.平时开发一直都是用其他人搭好的dubbo环境,最近自己抽空独立的搭建dubbo小demo,一个服务端,一个客户端. 服务端 服务端maven父工程 首先搭建一个maven父工程,引入dubbo和spring的依赖,dubbo可以和spring无缝集成. <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding

spring集成quartz

spring集成quartz 注意:出现异常"Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class" Spring3.0不支持Quartz2.0,因为org.quartz.CronTrigger在2.0从class变成

Hessian入门(包括与Spring集成)

A.纯Hessian接口开发步骤 Hessian-JAVA服务器端必须具备以下几点: * 1.包含Hessian的jar包(hessian-4.0.37.jar) * 2.设计一个接口,用来给客户端调用(IHessian.java) * 3.实现该接口的功能(IHessianImpl.java) * 4.配置web.xml,配好相应的Servlet(web.xml) * 5.对象必须实现Serializable接口(Foo.java) Hessian-JAVA服务端代码预览图: 1.包含Hess

activiti搭建(二)与Spring集成

转载请注明源地址:http://www.cnblogs.com/lighten/p/5876773.html 本文主要讲解如何将Activiti和Spring框架集成,再过一段时间将会将一个基础的demo放在github上,地址将会在activiti系列导读文章中给出,如果未给出,则是因为没有构建完成(学习中,更新较慢).按照搭建篇章的顺序,也能搭建起来. 上一章将了数据库的初始化,继续那章建立的maven项目.Activiti与Spring集成需要相应的jar包,下面将补充其他maven依赖:

【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(转)

Dubbo与Zookeeper.Spring整合使用 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载. 一:单机模式安装zookeeper 1,下载zookeeper注册中心,下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/ 下载后解压即可,进入E:\zookeeper-3.3.6\zookeeper-3.3.6

【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇(二)

Dubbo与Zookeeper.Spring整合使用 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载. 一:单机模式安装zookeeper 1,下载zookeeper注册中心,下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/ 下载后解压即可,进入E:\zookeeper-3.3.6\zookeeper-3.3.6