今天是六一儿童节,从千里之外的广州,回到了贵州老家,真好!好山好水好心情,好了接着写点东西。这是企业级应用,如何实现服务化系列的第三篇。在上一篇:企业级应用,如何实现服务化二(dubbo架构)中,认识了dubbo的整体架构,和dubbo四大特点:连通性、健壮性、伸缩性、升级性。下面先来实现一个入门级的demo,直观感受一下。

1.案例说明

通过一个简单的案例,演示dubbo入门使用。案例中只有服务提供者,服务消费者。

2.案例实现

  2.1.创建项目

  2.2.配置pom.xml导入依赖

<?xml version="1.0" encoding="UTF-8"?>
<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.anan</groupId>
<artifactId>dubbo-demo</artifactId>
<version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties>
<!--spring 版本-->
<spring.version>5.0.2.RELEASE</spring.version>
<!--dubbo版本-->
<dubbo.version>2.7.0</dubbo.version>
</properties> <dependencies>
<!--spring依赖包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!--dubbo依赖-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency> </dependencies>
</project>

  2.3.服务端开发

    2.3.1.service接口

package com.anan.dubbo.service;

/**
* 服务接口
*/
public interface HelloService { /**
* 问好
*/
String sayHello(String name);
}

    2.3.2.service接口实现

package com.anan.dubbo.service.impl;

import com.anan.dubbo.service.HelloService;

/**
* 服务接口实现
*/
public class HelloServiceImpl implements HelloService{ /**
* 问好
*
* @param name
*/
public String sayHello(String name) {
return "hello,"+name+"!";
}
}

  2.4.配置服务提供者

<?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://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo
http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <!--提供方应用信息,用于计算依赖关系-->
<dubbo:application name="provider-hello-world-app" /> <!--使用multicast广播注册中心暴露服务地址-->
<dubbo:registry address="multicast://224.1.1.1:6666"/> <!--用dubbo协议在20880端口暴露服务-->
<dubbo:protocol name="dubbo" port="20880"/> <!--声明需要暴露的服务接口-->
<dubbo:service interface="com.anan.dubbo.service.HelloService" ref="helloService"/> <!--和本地bean一样实现服务-->
<bean id="helloService" class="com.anan.dubbo.service.impl.HelloServiceImpl"/> </beans>

  2.5.配置服务消费者

<?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://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo
http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <!--消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样-->
<dubbo:application name="consumer-hello-world-app" /> <!--使用multicast广播注册中心暴露发现服务地址-->
<dubbo:registry address="multicast://224.1.1.1:6666"/> <!--生成远程服务代理,可以和本地bean一样使用helloService-->
<dubbo:reference id="helloService" interface="com.anan.dubbo.service.HelloService" /> </beans>

  2.6.测试

    2.6.1.启动服务提供者Provider

package com.anan.dubbo.provider;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* 服务提供者
*/
public class Provider { public static void main(String[] args) throws Exception{
// 加载spring配置文件,创建spring容器
ApplicationContext context =
new ClassPathXmlApplicationContext("classpath:provider.xml"); // 阻塞:等待输入,可按任意键退出
System.in.read();
}
}

    2.6.2.启动服务消费者Consumer

package com.anan.dubbo.consumer;

import com.anan.dubbo.service.HelloService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* 服务消费者
*/
public class Consumer { public static void main(String[] args) {
// 加载spring配置文件,创建spring容器
ApplicationContext context =
new ClassPathXmlApplicationContext("classpath:consumer.xml"); // 获取远程服务代理
HelloService helloService = (HelloService)context.getBean("helloService");
//System.out.println(helloService.getClass()); // 执行远程方法
String result = helloService.sayHello("anan");
System.out.println(result); }
}

企业级应用,如何实现服务化三(dubbo入门案例)的更多相关文章

  1. 分布式服务框架Dubbo入门案例和项目源码

    本项目源代码:http://download.csdn.net/detail/fansunion/9498406 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案, 是 ...

  2. spring入门案例分析及原理

    Springmvc执行原理: 一. 入门案例的执行流程 1. 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,就会加载s ...

  3. 企业级应用,如何实现服务化五(dubbo综合案例)

    这是企业级应用,如何实现服务化第五篇.在上一篇企业级应用,如何实现服务化四(基础环境准备)中.已经准备好了zookeeper注册中心,和dubbo管理控制台.这一篇通过一个综合案例,看一看在企业级应用 ...

  4. Dubbo入门—搭建一个最简单的Demo框架

    一.Dubbo背景和简介 1.电商系统的演进 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. a.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一 ...

  5. 基于MAVEN使用IDEA创建dubbo入门项目图文教程

    花了很长时间没有找到一个很详细的图文教程来学习dubbo入门框架,故记录下来. 一: 项目工程目录 简单介绍项目目录结构: 二: 创建父工程 具体操作步骤: 1,打开IDEA,按下面步骤来 File- ...

  6. dubbo入门学习笔记之入门demo(基于普通maven项目)

    注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...

  7. Dubbo入门---搭建一个最简单的Demo框架(转)

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

  8. Dubbo入门介绍---搭建一个最简单的Demo框架

    Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbozookeeper 更多 个人分类: D ...

  9. 电商系统的演变可以看出架构演变 Dubbo入门 远程过程调用 需要解决的问题

    Dubbo入门---搭建一个最简单的Demo框架 - CSDN博客 https://blog.csdn.net/noaman_wgs/article/details/70214612 Dubbo背景和 ...

随机推荐

  1. 配置hadoop用户SSH无密码登陆 的2种方式 落脚点是 可以ssh免密进入的主机名写入动作发出主机的 known_hosts,而被无密进入主机的authorized_keys文件 免密登录

    cat /proc/versionLinux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version ...

  2. 指定查询条件,查询对应的集合List(单表)

    TestDao.java(测试类) @Test public void findCollectionByConditionNoPage(){  ApplicationContext ac = new ...

  3. Machine Learning in Action(2) 决策树算法

    决策树也是有监督机器学习方法. 电影<无耻混蛋>里有一幕游戏,在德军小酒馆里有几个人在玩20问题游戏,游戏规则是一个设迷者在纸牌中抽出一个目标(可以是人,也可以是物),而猜谜者可以提问题, ...

  4. 在iOS平台使用ffmpeg解码h264视频流(转)

    在iOS平台使用ffmpeg解码h264视频流,有需要的朋友可以参考下. 对于视频文件和rtsp之类的主流视频传输协议,ffmpeg提供avformat_open_input接口,直接将文件路径或UR ...

  5. apk下载与安装

    public class MainActivity extends Activity { private File apkFile; @Override protected void onCreate ...

  6. javascript面向对象技术基础总结

    javascript面向对象和php不太一样,语法不太相同,总结如下 //cat 对象 function Cat(name,color){ this.name = name;//不确定的成员属性 th ...

  7. spl处理文件(文件详细信息、文件遍历、查询指定行、写入CSV文件)

    <?php /** * 文件操作 */ //常用操作 $file = new SplFileInfo('D:/workspace/xlyy/spl/test.txt'); $file_info ...

  8. [noip2014day1-T3]飞扬的小鸟

    Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. ...

  9. RobotFramework教程使用笔记——Selenium2Library库

    selenium之前已经学习介绍过了,它是一个支持多语言.多平台.多浏览器的web自动化测试框架,在robotframework中也可以导入selenium库来进行web自动化测试.它使用seleni ...

  10. ora-12519:TNS ,no appropriate service handler found

    今天有同事反应,数据库连不了,提示 ora-12519:TNS ,no appropriate service handler found: 一开始以为监听没有启动,排查后,发现正常:于是google ...