dubbo简单入门(helloworld例子)

原创 2016年05月31日 09:56:39

Dubbo现在支持的有三种方式:
1.multicast;
2.zookeeper;
3.redis
下面的Demo使用的是multicast方式。

提供者项目结构:
这里写图片描述
消费者项目结构:
这里写图片描述

服务端:

pom.xml配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ming</groupId>
    <artifactId>dubboserver</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
        </dependency>
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.15.0-GA</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.15</version>
            <exclusions>
                <exclusion>
                    <groupId>com.sun.jdmk</groupId>
                    <artifactId>jmxtools</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jmx</groupId>
                    <artifactId>jmxri</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>jms</artifactId>
                    <groupId>javax.jms</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>mail</artifactId>
                    <groupId>javax.mail</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.3.6</version>
        </dependency>
        <dependency>
            <groupId>com.github.adyliu</groupId>
            <artifactId>zkclient</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.netty</groupId>
            <artifactId>netty</artifactId>
            <version>3.2.0.Final</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.4</version>
        </dependency>
    </dependencies>
</project>  

applicationProvider.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="hello-world" /><!-- 注册地址 -->  
<dubbo:registry address="multicast://224.5.6.7:1234"/>   
<!-- <dubbo:registry address="127.0.0.1:2181" protocol="zookeeper"/>  -->
<dubbo:protocol name="dubbo" port="20880" />          
<bean id="demoService" class="com.ming.dubboserver.HelloWorldImpl" />  
<dubbo:service interface="com.ming.dubboserver.HelloWorld" ref="demoService" executes="10" />  
</beans>  

helloworld接口:

package com.ming.dubboserver;

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

helloworld实现类

package com.ming.dubboserver;

public class HelloWorldImpl implements HelloWorld {

    public String hello(String name) {
        name = name + "小明测试";
        return name;

    }

}

服务启动类:

package com.ming.dubboserver;

import java.io.IOException;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DubboProviderMain {
    public static void main(String[] args) throws IOException {

        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                new String[] { "applicationProvider.xml" });
        context.start();
        System.out.println("Press any key to exit.");
        System.in.read();
    }
}

客户端:
pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ming</groupId>
    <artifactId>dubboconsumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>dubboconsumer</name>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
        </dependency>
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.15.0-GA</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.15</version>
            <exclusions>
                <exclusion>
                    <groupId>com.sun.jdmk</groupId>
                    <artifactId>jmxtools</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jmx</groupId>
                    <artifactId>jmxri</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>jms</artifactId>
                    <groupId>javax.jms</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>mail</artifactId>
                    <groupId>javax.mail</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>com.github.adyliu</groupId>
            <artifactId>zkclient</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.3.6</version>
        </dependency>
        <dependency>
            <groupId>com.ming</groupId>
            <artifactId>dubboserver</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>  

applicationConsumer.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="consumer-of-helloworld-app" />
    <dubbo:registry address="multicast://224.5.6.7:1234" />
    <dubbo:reference id="demoService" interface="com.ming.dubboserver.HelloWorld" />
</beans>   

测试类:

package com.ming.dubboconsumer;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.ming.dubboserver.HelloWorld;
public class ConsumerThd implements Runnable {
    public void run() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                new String[] { "applicationConsumer.xml" });
        context.start();
        context.getBean("demoService");

         HelloWorld helloWorld = (HelloWorld) context.getBean("demoService");
         String hello = helloWorld.hello("小明");
         System.out.println(hello);
         System.out.println("执行完毕");
    }

    public static void main(String[] args) {
        new Thread(new ConsumerThd()).start();
    }
}

还有一种方式是将Zookeeper作为注册中心,需要下载并安装zookeeper。将配置文件中的注册中心修改为如下即可:

其他代码不用修改,推荐使用zookeeper作为注册中心。如此可以通过Dubbo+注册中心实现分布式服务。服务消费者不用知道服务的具体位置,只要知道注册中心位置即可,消费者只要能消费,不用管消费的是哪的服务,服务提供方与服务消费方解耦。
使用zookeeper注册中心,与dubbo结合,可以查看服务提供者和消费者的信息,将dubbo管理的war包部署到tomcat上,查看服务提供者

版权声明:本文为博主原创文章,未经博主允许不得转载。

Dubbo之入门例子HelloWorld

1、项目的目录结构  2、关于Zookeeper的安装       关于Zookeeper的安装,详情见前面的博客  http://blog.csdn.net/zbw18297786698/arti...
  • zbw18297786698
  • zbw18297786698
  • 2017年01月16日 14:09
  • 1150

Dubbo分布式服务框架入门(附工程)

本文是转载文章,文章的来源:csdn博客 博主:小宝鸽 文章:Dubbo分布式服务框架入门(附工程) 博文地址:http://blog.csdn.net/u013142781/article/d...
  • a15920804969
  • a15920804969
  • 2018年01月13日 21:05
  • 73

Dubbo实战(一)快速入门

Dubbo是什么?Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,...
  • FX_SKY
  • FX_SKY
  • 2016年03月30日 00:44
  • 37423

Dubbo入门---搭建一个最简单的Demo框架

Dubbo背景和简介Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本。 ...
  • noaman_wgs
  • noaman_wgs
  • 2017年04月17日 19:10
  • 107110

Dubbo入门基础与实例讲解

Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。Dubbo是一个分布式服务框架,致力于...
  • Evankaka
  • Evankaka
  • 2015年08月27日 13:25
  • 9805

Dubbo新手入门实例HelloWorld(zookeeper)

最近刚接触dubbo,新手入门遇到好多麻烦,网上搜来的入门demo也是各种问题,百般周折自己终于倒腾出来了,与大家共享~ 1.创建服务方项目dubbo-server,在pom.xml中构建项目依赖...
  • xingbaozhen1210
  • xingbaozhen1210
  • 2016年05月26日 15:47
  • 5459

Dubbo+Zookeeper入门实例

现在的公司接口调用是通过dubbo来实现的,所以这两天就了解了一下dubbo是如何进行通信的,写了一个最简单的例子。自上得来终觉浅,绝知此事要躬行。      一.dubbo介绍           ...
  • wangbiao007
  • wangbiao007
  • 2016年05月20日 16:11
  • 3974

Dubbo入门之HelloWorld篇

一、前言 Dubbo是阿里巴巴推出的分布式服务器,通过Dubbo可以为Web应用提供WebService的功能。把单服务器应用实现分布式,万事开头难,在Dubbo的使用前,必须要部署Dubb...
  • WJW15363193644wjw
  • WJW15363193644wjw
  • 2017年05月29日 15:26
  • 855

Dubbo最简单的实例

用最简单的组播方式来编写dubbo小例子 分别新建两个maven webapp项目,一个是服务器端的,一个是客户端的。   服务器端这边项目的结构如下图:...
  • u011439289
  • u011439289
  • 2014年11月19日 15:23
  • 13321

DUBBO本地搭建及小案例

阿里的DUBBO现在使用的人越来越多了,公司也在用,但是自己没有搭建过DUBBO,这几天搭建了一下,于是把我搭建的步骤和遇到的问题分享出来给大家! DUBBO的介绍部分我这里就不介绍了,大家可参考官...
  • huangyekan
  • huangyekan
  • 2014年12月26日 16:51
  • 104186
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:dubbo简单入门(helloworld例子)
举报原因:
原因补充:

(最多只允许输入30个字)