企业级应用,如何实现服务化三(dubbo入门案例)
今天是六一儿童节,从千里之外的广州,回到了贵州老家,真好!好山好水好心情,好了接着写点东西。这是企业级应用,如何实现服务化系列的第三篇。在上一篇:企业级应用,如何实现服务化二(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入门案例)的更多相关文章
- 分布式服务框架Dubbo入门案例和项目源码
本项目源代码:http://download.csdn.net/detail/fansunion/9498406 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案, 是 ...
- spring入门案例分析及原理
Springmvc执行原理: 一. 入门案例的执行流程 1. 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,就会加载s ...
- 企业级应用,如何实现服务化五(dubbo综合案例)
这是企业级应用,如何实现服务化第五篇.在上一篇企业级应用,如何实现服务化四(基础环境准备)中.已经准备好了zookeeper注册中心,和dubbo管理控制台.这一篇通过一个综合案例,看一看在企业级应用 ...
- Dubbo入门—搭建一个最简单的Demo框架
一.Dubbo背景和简介 1.电商系统的演进 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. a.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一 ...
- 基于MAVEN使用IDEA创建dubbo入门项目图文教程
花了很长时间没有找到一个很详细的图文教程来学习dubbo入门框架,故记录下来. 一: 项目工程目录 简单介绍项目目录结构: 二: 创建父工程 具体操作步骤: 1,打开IDEA,按下面步骤来 File- ...
- dubbo入门学习笔记之入门demo(基于普通maven项目)
注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...
- Dubbo入门---搭建一个最简单的Demo框架(转)
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. ...
- Dubbo入门介绍---搭建一个最简单的Demo框架
Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbozookeeper 更多 个人分类: D ...
- 电商系统的演变可以看出架构演变 Dubbo入门 远程过程调用 需要解决的问题
Dubbo入门---搭建一个最简单的Demo框架 - CSDN博客 https://blog.csdn.net/noaman_wgs/article/details/70214612 Dubbo背景和 ...
随机推荐
- eclipse调试第三方jar包需要源码的问题
很多时候测试自己的jar包功能时,需要有一个测试工程导入该jar包,但是一般在调试的时候,需要跟进去看看步骤和逻辑是否正确,这个时候就需要在jar包的源码中下断点.最近刚好自己也会经常这样做,也遇到了 ...
- 代码空间项目 -- InstantiationException的异常
java.lang.InstantiationException实例化异常.当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常. 这次项目中查询type时 ...
- sort quick
package com.demo; import java.util.ArrayList; import java.util.List; public class SearchSort { publi ...
- html5--3.10 input元素(9)
html5--3.10 input元素(9) 学习要点 input元素及其属性 input元素 用来设置表单中的内容项,比如输入内容的文本框,按钮等 不仅可以布置在表单中,也可以在表单之外的元素使用 ...
- linux系统配置之服务程序的开机自启动(centos)
CentOS安装好apache.mysql等服务器程序后,并没有设置成开机自动启动的,为避免重启后还要手动开启web等服务器,还是做下设置好,其实设置很简单,用chkconfig命令就行了. 例如,要 ...
- codeforces 450B B. Jzzhu and Sequences(矩阵快速幂)
题目链接: B. Jzzhu and Sequences time limit per test 1 second memory limit per test 256 megabytes input ...
- RAM的分类
转载自:http://wenku.baidu.com/view/b17d73244b35eefdc8d333ab.html RAM(随机存储器)可以分为SRAM(静态随机存储器)和DRAM(动态随机存 ...
- nginx开发_字符串操作函数
由于ngx_str_t为非NULL结尾的函数,且网络请求中有大量忽略大小写的需求,所以nginx内部封装了许多字符串操作相关的函数,函数名称极其相识,且使用时有有些约定,特此整理. 赋值&拷贝 ...
- Tensorflow基础知识
基本知识 使用 TensorFlow, 你必须明白 TensorFlow: 使用图 (graph) 来表示计算任务. 在被称之为 会话 (Session) 的上下文 (context) 中执行图. 使 ...
- Ubuntu无法访问Windows磁盘, 且无提示信息
现象描述, 双系统Ubuntu和Windows, 进入Ubuntu后无法访问Windows盘内容, 且图标闪烁无任何错误信息提示. 1.安装ntfsfix sudo apt-get install n ...