(1)pom.xml引入相关依赖jar包,如下:

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>dubbo</artifactId>
  4. <version>2.5.3</version>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>org.springframework</groupId>
  8. <artifactId>spring</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.apache.zookeeper</groupId>
  14. <artifactId>zookeeper</artifactId>
  15. <version>3.4.5</version>
  16. <exclusions>
  17. <exclusion>
  18. <groupId>org.slf4j</groupId>
  19. <artifactId>slf4j-log4j12</artifactId>
  20. </exclusion>
  21. <exclusion>
  22. <groupId>log4j</groupId>
  23. <artifactId>log4j</artifactId>
  24. </exclusion>
  25. </exclusions>
  26. </dependency>
  27. <dependency>
  28. <groupId>com.github.sgroschupf</groupId>
  29. <artifactId>zkclient</artifactId>
  30. <version>0.1</version>
  31. </dependency>

  (2)编写服务的接口以及实现类,如下:

  1. package springboot.dao;
  2.  
  3. public interface DubboService {
  4.  
  5. public String sayHello();
  6. }

  接口实现类:

  1. package springboot.dao.imp;
  2. import org.springframework.stereotype.Service;
  3. import springboot.dao.DubboService;
  4.  
  5. @Service("DubboService")
  6. public class DubboServiceImp implements DubboService{
  7.  
  8. @Override
  9. public String sayHello() {
  10.  
  11. return "Hello Dubbo";
  12. }
  13.  
  14. }

  (3)在resources文件下建立服务方provider.xml配置文件,内容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://code.alibabatech.com/schema/dubbo
  7. http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  8. <!-- 服务应用名称 -->
  9. <dubbo:application name="provider"/>
  10. <!-- 使用zookeeper做为注册中心 -->
  11. <dubbo:registry protocol="zookeeper" address="zookeeper://172.31.19.224:2181"/>
  12. <!-- ref中的值要跟服务实现类中的@Server的值一致 -->
  13. <dubbo:service interface="springboot.dao.DubboService" ref="DubboService"></dubbo:service>
  14. </beans>

  (4)修改springboot启动类,启动时引入provider.xml文件,使用@ImportResource("classpath:provider.xml"),如下:

  1. package springboot;
  2.  
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.boot.builder.SpringApplicationBuilder;
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. import org.springframework.cache.annotation.EnableCaching;
  8. import org.springframework.context.annotation.ImportResource;
  9. import org.springframework.scheduling.annotation.EnableScheduling;
  10.  
  11. @SpringBootApplication
  12. @EnableScheduling
  13. @EnableCaching
  14. @ImportResource("classpath:consumer.xml")
  15. public class SpringbootApplication extends SpringBootServletInitializer{
  16.  
  17. public static void main(String[] args) {
  18. SpringApplication.run(SpringbootApplication.class, args);
  19. }
  20. @Override
  21. protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  22. return application.sources(SpringbootApplication.class);
  23. }
  24. }

  至此,服务方已经配置完毕了,我这里将代码发布到tomcat上。如果想在本地测试话,需要更改一下启动端口,因为后面消费方也需要启动。

  (5)接下来我们将服务接口.class文件(即上述的DubboService.class接口)打成jar包,(服务消费方在项目中需要导入该jar包才能调用服务),进入到DubboService.class目录下,启动控制台,输入:

  

  至此,dubbo服务方提供已经开发完毕!

  (6)接下来开发服务消费方,将上述jar包导入到项目中。如果是maven项目,还需要将jar继续打包,将上述jar包修改成DubboService-1.0.jar,输入如下命令:

  1. mvn install:install-file -Dfile=DubboService-1.0.jar -DgroupId=dubboService -DartifactId=dubboService -Dversion=1.0 -Dpackaging=jar

  结束后,会在本地仓库生成如下文件夹:

  

 (7)在resources文件下新建consumer.xml配置文件,如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://code.alibabatech.com/schema/dubbo
  7. http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  8. <!-- 应用名称 -->
  9. <dubbo:application name="consumer" />
  10. <!-- zookeeper作为注册中心 -->
  11. <dubbo:registry protocol="zookeeper" address="zookeeper://172.31.19.224:2181" />
  12. <!-- 生成远程服务代理 -->
  13. <dubbo:reference interface="springboot.dao.DubboService" id="dubboService"></dubbo:reference>
  14. </beans>

  (8)在pom.xml中引入刚刚打包生成的jar包,如下:

  1. <dependency>
  2. <groupId>dubboService</groupId>
  3. <artifactId>dubboService</artifactId>
  4. <version>1.0</version>
  5. </dependency>

  (9)新建Controller,如下:

  1. package springboot.web;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. import springboot.dao.DubboService;
  6.  
  7. @RestController
  8. public class HelloController {
  9.  
  10. @Autowired
  11. private DubboService dubboService;
  12.  
  13. @RequestMapping("/hello")
  14. public String hello(){
  15. return dubboService.sayHello();
  16. }
  17. }

  (10)修改启动类,如下:

  1. package springboot;
  2.  
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.boot.builder.SpringApplicationBuilder;
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;
  7. import org.springframework.cache.annotation.EnableCaching;
  8. import org.springframework.context.annotation.ImportResource;
  9. import org.springframework.scheduling.annotation.EnableScheduling;
  10.  
  11. @SpringBootApplication
  12. @EnableScheduling
  13. @EnableCaching
  14. @ImportResource("classpath:consumer.xml")
  15. public class SpringbootApplication extends SpringBootServletInitializer{
  16.  
  17. public static void main(String[] args) {
  18. SpringApplication.run(SpringbootApplication.class, args);
  19. }
  20. @Override
  21. protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  22. return application.sources(SpringbootApplication.class);
  23. }
  24. }

  (11)测试验证,浏览器输入:http://localhost:8080/hello,显示如下:

    

  至此,springBoot与Dubbo整合完毕!过程中也遇到一些小问题,记录一下吧。

  (1)过程provider.xml,consumer.xml文件会报错,但是不影响项目运行,如下:Description Resource Path Location Type cvc-complex-type.2.4.c: The matching..........

           解决方法如下:http://blog.csdn.net/u010457406/article/details/50696390

  (2)项目没有报错,但是项目名出现了个红叉,百度搜了好多都不对,只有这个有效,地址如下:

      解决方法如下:http://blog.csdn.net/hongchangfirst/article/details/7663287

  继续努力!

SpringBoot与Dubbo整合下篇的更多相关文章

  1. springboot与dubbo整合入门(三种方式)

    Springboot与Dubbo整合三种方式详解 整合环境: jdk:8.0 dubbo:2.6.2 springboot:2.1.5 项目结构: 1.搭建项目环境: (1)创建父项目与三个子项目,创 ...

  2. SpringBoot与Dubbo整合的三种方式

    1. 使用默认application.properties和注解的方式 导入dubbo-starter,在application.properties配置属性,使用@Service注解来暴露服务,使用 ...

  3. springboot与dubbo整合遇到的坑

    整合环境: dubbo 2.6.2 springboot 2.1.5 遇到的问题:服务一直无法注册到zookeeper注册中心 项目结构: 使用application.properties文件: 配置 ...

  4. SpringBoot与Dubbo整合-项目搭建

    本章节建立生产者和消费者来演示dubbo的demo 生产者:springboot-dubbo-provider 和 消费者:springboot-dubbo-consumer 工程配置详解 Apach ...

  5. 关于Springboot中dubbo整合注意的误区(不对之处请指出)

    这是我的客户端配置! 这是生产的配置, 首先注意一下 scan   我之前尝试这样的客户端配置 然后  果断客户端不能注册接口 @Reference(version="1.0") ...

  6. SpringBoot与Dubbo整合上篇

    最近学习了一下dubbo,是阿里巴巴公司的一个开源服务框架.目前我们公司实现两个不同系统的之间通信,是采用了Oracle的OSB作为服务的管理(即企业服务总线的一种实现),服务提供方在OSB上注册业务 ...

  7. 玩转 SpringBoot 2 之整合 JWT 下篇

    前言 在<玩转 SpringBoot 2 之整合 JWT 上篇> 中介绍了关于 JWT 相关概念和JWT 基本使用的操作方式.本文为 SpringBoot 整合 JWT 的下篇,通过解决 ...

  8. dubbo入门学习(三)-----dubbo整合springboot

    springboot节省了大量的精力去配置各种bean,因此通过一个简单的demo来整合springboot与dubbo 一.创建boot-user-service-provider 本篇博文基于上篇 ...

  9. Dubbo整合Springboot框架

    本文使用的是alibaba的Dubbo. Dubbo整合Springboot可以分为四步: 第一步:首先需要了解Dubbo官方给的建议,至少有三个工程: 接口工程:主要存实体bean和业务接口 服务提 ...

随机推荐

  1. request.get... getHeader 能取得的信息 参数

    转载▼   StringTokenizer st = new StringTokenizer(agent,";"); st.nextToken(); //得到用户的浏览器名 Str ...

  2. 单用户模式进入centos

    修改root密码----------------单用户模式操作 个人原创博客,转载请注明,否则追究法律责任 author: headsen chen date: 2017-9-30 1,开机后,迅速按 ...

  3. mysql格式化日期的函数

    转自:https://www.cnblogs.com/duhuo/p/5650876.html mysql格式化日期   mysql查询记录如果有时间戳字段时,查看结果不方便,不能即时看到时间戳代表的 ...

  4. 并查集+路径压缩(poj1988)

    http://poj.org/problem?id=1988 Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submiss ...

  5. 树形DP求树的直径

    hdu4607 Park Visit Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  6. 170802、Elasticsearch5.2.2 安装问题记录

    使用Elasticsearch5.2.2 必须安装jdk1.8 [elsearch@vm-mysteel-dc-search01 bin]$ java -version java version &q ...

  7. RSA算法原理与加密解密 求私钥等价求求模反元素 等价于分解出2个质数 (r*X+1)%[(p-1)(q-1)]=0

    Rsapaper.pdf http://people.csail.mit.edu/rivest/Rsapaper.pdf [概述Abstract 1.将字符串按照双方约定的规则转化为小于n的正整数m, ...

  8. 转!!git如何撤销上一次commit(或已push)

    原博文地址 : https://www.cnblogs.com/lyy-2016/p/6509707.html git如何撤销上一次commit操作 1.第一种情况:还没有push,只是在本地comm ...

  9. Python开发【模块】:Pygal 绘制直方图

    Pygal Pygal可用来生成可缩放的矢量图形文件,对于需要在尺寸不同的屏幕上显示的图表,这很有用,可以自动缩放,自适应观看者的屏幕 1.Pygal模块安装 ① Windows系统 # Pygal模 ...

  10. 十六.MySQL存储过程

    1.创建一个没有参数的存储过程 CREATE PROCEDURE sp1() SELECT VERSION(); 调用存储过程:CALL sp1(); 2.带有IN参数的存储过程 CREATE PRO ...