最简单的dubbo教程-快速入门
所需环境
zookeeper作为dubbo的注册中心,dubbo服务提供方和消费方都需要在zookeeper注册中心注册。
可参考:http://blog.csdn.net/jingyangv587/article/details/78901508
注意:启动后,请勿关闭!
开始搭建
###1. 服务提供方和消费方都需要的包(这里我新建的maven工程为pom工程,将共同的项目依赖写到pom.xml中)
总的项目结构为
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.test</groupId><artifactId>dubbo-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><properties><motan.version>0.3.0</motan.version><!-- 在阿里巴巴内部广泛使用的GA版本为:2.4.9,强烈推荐此版本 --><dubbo.version>2.5.3</dubbo.version><dubbox.version>2.8.4</dubbox.version><spring.version>4.3.6.RELEASE</spring.version><java.version>1.7</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version></dependency><!-- spring相关 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.6.11</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.6.11</version></dependency></dependencies><modules><module>demo-api</module><module>dubbo-consumer</module><module>dubbo-provider</module></modules>
</project>
2. 在demo-api中定义服务接口(注意服务提供方和消费方都需要依赖这个项目)
package com.test;public interface DemoService{ String sayHello(String name);
}
3. 服务提供方实现
- 项目结构
- 实现接口
package com.test;
import org.springframework.stereotype.Service;import com.test.DemoService;
@Service("demoService")
public class DemoServiceImpl implements DemoService{@Overridepublic String sayHello(String name) {// TODO Auto-generated method stubreturn name; }
}
- 声明暴露服务:
<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="dubbo_provider" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.test.DemoService" ref="demoService" />
</beans>
- 在springmvc.xml中扫描service注解并将dubbo-provider.xml中的相关的dubbo配置引入进来
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"default-autowire="byName"><aop:aspectj-autoproxy /><context:component-scan base-package="com.test" /><import resource="classpath:dubbo-provider.xml" />
</beans>
- 加载Spring配置,启动服务:
package com.test;import java.io.IOException;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:springmvc.xml");context.start();System.out.println("Dubbo provider start...");try {System.in.read(); // 按任意键退出} catch (IOException e) {e.printStackTrace();} }
}
###4. 服务消费者实现
- 项目结构
- 在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_consumer" /> <!-- 使用multicast广播注册中心暴露发现服务地址 --> <dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" /> <!-- 生成远程服务代理,可以和本地bean一样使用demoService --> <dubbo:reference id="demoService" interface="com.test.DemoService" />
</beans>
- 在springmvc.xml中扫描service注解并将dubbo-consumer.xml中的相关的dubbo配置引入进来
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"default-autowire="byName"><aop:aspectj-autoproxy /><context:component-scan base-package="com.test" /><import resource="classpath:/dubbo-consumer.xml" />
</beans>
- 加载Spring配置,调用服务:
package com.test;import java.io.IOException;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "classpath:springmvc.xml" });context.start();DemoService demoService = (DemoService) context.getBean("demoService");System.out.println(demoService.sayHello("哈哈哈"));try {System.in.read();} catch (IOException e) {e.printStackTrace();}}
}
- 如果出现以下结果则调用成功
- 通过dubbo-admin管理后台可以看到服务的提供方与消费方
具体搭建可参考博客:http://blog.csdn.net/jingyangv587/article/details/78904369
提供方:
消费者:
点击下载示例项目(含admin包)
参考博客:https://www.cnblogs.com/Javame/p/3632473.html
想进一步了解dubbo请移步我的另外的dubob相关的文章:https://blog.csdn.net/jingyangV587/article/details/84983770
最简单的dubbo教程-快速入门相关推荐
- 最简单的dubbo教程-快速入门《一》
最简单的dubbo教程-快速入门<一> 目录(?)[+] 所需环境 zookeeper作为dubbo的注册中心,dubbo服务提供方和消费方都需要在zookeeper注册中心注册. 可参考 ...
- 最全最简单的dubbo教程
前言 网上看dubbo相关文章,都是一堆复制粘贴的,有的甚至直接复制官网的变成自己的博客.无奈之下只有自己学习,顺便把学习的结果分享给大家.全部案例均使用最新的springboot的形式,传统mian ...
- 高性能RPC框架—----------------------Dubbo一站式快速入门
https://blog.csdn.net/tangyang8941/article/details/88025412 一.Web应用架构的演变 随着互联网的发展,网站应用的规模不断扩大,W ...
- Spring MVC 教程,快速入门,深入分析
目录 转载自:http://elf8848.iteye.com/blog/875830 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf 点击打开链接 SpringMVC核 ...
- struts2教程--快速入门
Struts2框架介绍 1.三大框架 : 是企业主流 JavaEE开发的一套架构 Struts2 + Spring + Hibernate 2. 什么是框架?为什么要学框架 ? 框架 是 实现部分功能 ...
- jmeter压测_简单七步,快速入门 JMeter原生压测
导入本地的 JMeter 原生脚本,即可快速发起一次压测. 前提条件 JMeter 脚本需要在本地调试成功. 请同时上传依赖的 CSV 或者 JAR 文件.CSV 文件的 File Name 只需要文 ...
- 简单七步,快速入门 JMeter原生压测
导入本地的 JMeter 原生脚本,即可快速发起一次压测. 前提条件 JMeter 脚本需要在本地调试成功. 请同时上传依赖的 CSV 或者 JAR 文件.CSV 文件的 File Name 只需要文 ...
- Dubbo实战快速入门 (转)
Dubbo是什么? Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封 ...
- 工业机器人入门z50的含义_工业机器人基础教程——快速入门学习
六轴.水平关节(SCARA).DELTA等不同类型的机器人入门基础教程,学完这些,您将成为一名优秀的机器人应用工程师! 到2020年,工业机器人密度达到每万名员工使用100台以上.我国工业机器人市场将 ...
- springmvc教程--快速入门教程
springmvc教程系列: springmvc史上最好教程(3) springmvc史上最好教程(2) 一. SpringMVC架构 1.1. Spring web mvc介绍 Spring web ...
最新文章
- python内置数据结构之dict
- 计算器,利用灰度图的顶帽扣出数字
- java gettext返回值_012-关于EditText中的getText()方法的返回值类型以及string的转换问题(转)...
- MSTAR GAMMA
- AOGNet:基于深度 AND-OR 语法网络的目标识别方法 | PaperDaily #28
- raise errorclass(errno, errval) sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, u
- ESP8266代码分析
- 这个拖后腿的“in”
- android app逆向分析,如何开始对Android应用的逆向分析?
- codeUp 2143: 迷瘴 浮点计算|贪心
- java 读取大文件内容_java读取大文件
- elasticsearch 之index API
- [2018.10.24 T3] 老大
- ati自定义分辨率_在Windows 10上设置自定义分辨率 | MOS86
- ESP8266 WIFI模块
- 【双拼】双拼输入法入门指南
- 国企“造船”转行测试,成功拿下11K,如今谁又甘心平庸呢?
- 测试服务器端口是否打开的几种办法
- matlab画图命令fplot,matlab绘图方法fplot
- 【kubernetes】coredns报错
热门文章
- win10应用商店无法安装
- 1909升级卡64_Win10专业版下载_1909 版64位(2019年11月更新)
- windows android装应用,以IT之家为例,Win10 Mobile安装安卓APK应用体验如何?
- 分治——线性时间选择算法
- 计算机老师教育叙事,信息技术教育叙事范文10篇 初中
- bt5 mysql字典,backtrack5下载
- 计算机操作系统--思维导图
- (PC+WAP)高等院校学院职业学校类网站源码 政府单位机构协会Pbootcms网站模板
- VB.NET异形窗体
- 小米 android 7.0下载地址,小米5安卓7.0公测版固件下载地址 仅限开发版