springboot 整合dubbox

1, 没了,,,

2, 安装zookeeper

可见: http://www.cnblogs.com/wenbronk/p/6636926.html

2.1 下载:

wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.8/

解压:

tar -zxf zookeeper-3.4..tar.gz

修改配置文件:

  cd zookeeper-3.4./conf

  cp zoo_sample.cfg zoo.cfg # zookeeper 默认是用../conf/zoo.cfg 如果没有这个文件则报错

  vim zoo.cfg

其他, 能启动就行吧

  cd zookeeper-3.4./bin

  ./start.sh start #启动zookeeper 关闭: ./start.sh stop

我的zookeeper是安装在docker上的, 安装方式可见: http://www.cnblogs.com/wenbronk/p/6438492.html

3, maven工程

|--dubbo-prent                   父工程(pom)
|
|_____dubbo-cosumer 消费者(war)
|
|_____duboo-provide 生产者(pom)
    |
    |_____interface 消费者和生产者都依赖这个, 一个接口, 实现rpc(jar)
    |
    |_____service        实际的rpc调用的方法(war)

其中interface 被 dubbo-consumer和service所依赖

4, parent

parent主要用来统一管理使用的, 在其pom中进行jar包的统一依赖管理

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.</modelVersion>
<groupId>com.wenbronk</groupId>
<artifactId>dubbo-parent</artifactId>
<version>0.0.-SNAPSHOT</version>
<packaging>pom</packaging> <!-- 添加父依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5..RELEASE</version>
</parent> <properties>
<spring-boot.version>1.5..RELEASE</spring-boot.version>
<java.version>1.8</java.version>
<fastjson.version>1.2.</fastjson.version>
<dubbo-spring-boot>1.0.</dubbo-spring-boot>
</properties> <dependencyManagement>
<dependencies> <!-- Spring Boot Dubbo 依赖 -->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>${dubbo-spring-boot}</version>
</dependency> <dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency> </dependencies>
</dependencyManagement> </project>

5, dubbo-provide, 这儿没什么用, 管理生产者和接口, 实际中还可以用来依赖统一的工具包等

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.</modelVersion>
<parent>
<groupId>com.wenbronk</groupId>
<artifactId>dubbo-parent</artifactId>
<version>0.0.-SNAPSHOT</version>
</parent>
<artifactId>dubbo-provide</artifactId>
<packaging>pom</packaging>
<modules>
<module>dubbo-provide-service</module>
<module>dubbo-provide-interface</module>
</modules>
</project>

6, interface:

用来rpc调用的接口, 只有一个类:

TestService.java

package com.wenbronk.dubbo.service;

public interface TestService {

    public String test();
}

7, service

服务的生产者:

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.</modelVersion>
<parent>
<groupId>com.wenbronk</groupId>
<artifactId>dubbo-provide</artifactId>
<version>0.0.-SNAPSHOT</version>
</parent>
<artifactId>dubbo-provide-service</artifactId>
<packaging>war</packaging> <dependencies>
<!-- exclude掉spring-boot的默认log配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency> <!-- spring-boot的web启动的jar包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 为了构建一个即是可执行的,又能部署到一个外部容器的war文件,你需要标记内嵌容器依赖为"provided" -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency> <dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
</dependency> <!-- Spring Boot Test 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <dependency>
<groupId>com.wenbronk</groupId>
<artifactId>dubbo-provide-interface</artifactId>
<version>0.0.-SNAPSHOT</version>
</dependency>
</dependencies> <build>
<plugins>
<!-- main方法运行需要 -->
<!-- 加入热部署插件, spring-boot:run可用 -->
<!-- java可用, 需要下载jar包放在lib下, 然后修改vm参数 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin </artifactId>
<dependencies>
<!--springloaded hot deploy -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2..RELEASE</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin> </plugins>
</build> </project>

发布dubbo服务, 在application.properties中加入以下配置:

server.port=

# Dubbo 消费者
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://192.168.50.202:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=
spring.dubbo.scan=com.wenbronk.dubbo

注意配置 scan的扫描路径

App.java

package com.wenbronk.dubbo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class App { public static void main(String[] args) throws Exception {
SpringApplication.run(App.class, args);
} }

TestServiceImpl.java

package com.wenbronk.dubbo.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.wenbronk.dubbo.service.TestService; @Service(version="1.0.0")
public class TestServiceImpl implements TestService { @Override
public String test() {
System.out.println("success");
return "finally, i am coming";
} }

8, 最后, 是cosumer

pom.xml中配置, 同service中一样,

application.properties

## 避免和 server 工程端口冲突
server.port= ## Dubbo 服务消费者配置
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://192.168.50.202:2181
spring.dubbo.scan=com.wenbronk.dubbo

App.java 同service一样

TestController.java

package com.wenbronk.dubbo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import com.alibaba.dubbo.config.annotation.Reference;
import com.wenbronk.dubbo.service.TestService; @RestController
public class TestController { @Reference(version="1.0.0")
private TestService testService; @RequestMapping("/abc")
public String test() {
System.out.println("controller.sucess");
testService.test();
return "success";
} }

最初因为说dubbo-start不支持新的spring了, 所以下载了当当的dubbox自己编译, 后来发现, 还是可以用的

附: dubbox编译

dubbo, 阿里不维护了, 当当继续开源: 因为没有发布在仓库, 所以自己编译

git clone https://git.oschina.net/smarti/spring-boot-mybatis-sample.git

然后跳过test进行编译, 可以发布在本地仓库中

mvn install -Dmaven.test.skip=true

听说用注解的话, 不支持事物, 还没遇到, 遇到在更新

springboot-19-整合dubbox的更多相关文章

  1. SpringBoot(19)---SpringBoot整合Apollo

    SpringBoot(19)---SpringBoot整合Apollo 有关Apollo之前已经写了两篇文章: 1.[Apollo](1)--- Apollo入门介绍篇 2.[Apollo](2)-- ...

  2. 2、SpringBoot+MybatisPlus整合-------BaseCRUD

    开发工具:STS 代码下载链接:GitHub管理代码 版本: Springboot:1.5.14.RELEASE 使用2.0以上的Springboot,会报出一些异常.欢迎知道异常原因的大牛解惑. M ...

  3. SpringBoot 同时整合thymeleaf html、vue html和jsp

    问题描述 SpringBoot如何同时访问html和jsp SpringBoot访问html页面可以,访问jsp页面报错 SpringBoot如何同时整合thymeleaf html.vue html ...

  4. SpringBoot+AOP整合

    SpringBoot+AOP整合 https://blog.csdn.net/lmb55/article/details/82470388 https://www.cnblogs.com/onlyma ...

  5. SpringBoot+Redis整合

    SpringBoot+Redis整合 1.在pom.xml添加Redis依赖 <!--整合Redis--> <dependency> <groupId>org.sp ...

  6. SpringBoot+Swagger整合API

    SpringBoot+Swagger整合API Swagger:整合规范的api,有界面的操作,测试 1.在pom.xml加入swagger依赖 <!--整合Swagger2配置类--> ...

  7. springboot+maven整合spring security

    springboot+maven整合spring security已经做了两次了,然而还是不太熟悉,这里针对后台简单记录一下需要做哪些事情,具体的步骤怎么操作网上都有,不再赘述.1.pom.xml中添 ...

  8. springboot下整合各种配置文件

    本博是在springboot下整合其他中间件,比如,mq,redis,durid,日志...等等  以后遇到再更.springboot真是太便捷了,让我们赶紧涌入到springboot的怀抱吧. ap ...

  9. SpringBoot Mybatis整合(注解版),SpringBoot集成Mybatis(注解版)

    SpringBoot Mybatis整合(注解版),SpringBoot集成Mybatis(注解版) ================================ ©Copyright 蕃薯耀 2 ...

  10. SpringBoot Druid整合,SpringBoot 集成Druid

    SpringBoot Druid整合,SpringBoot 集成Druid ================================ ©Copyright 蕃薯耀 2018年4月8日 http ...

随机推荐

  1. 区间 桂林电子科技大学第三届ACM程序设计竞赛

    链接:https://ac.nowcoder.com/acm/contest/558/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  2. Ansible免密码登陆

    配置Linux主机无密码访问 生成秘钥 ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to ...

  3. boot分区剩余空间不足

      Linux boot分区用于存放内核文件以及Linux一些启动配置文件,一般情况下分区大小为500M足够使用,如果出现空间不足的问题可以使用以下方法来解决. 查看已经安装的内核 dpkg --ge ...

  4. Javascript设计模式理论与实战:享元模式

    享元模式不同于一般的设计模式,它主要用来优化程序的性能,它最适合解决大量类似的对象而产生的性能问题.享元模式通过分析应用程序的对象,将其解析为内在数据和外在数据,减少对象的数量,从而提高应用程序的性能 ...

  5. telerik:RadGrid 表格中删除数据

    <telerik:RadGrid OnItemCommand=" Height="490px" Culture="zh-CN" CssClass ...

  6. 显式等待-----Selenium快速入门(十)

    上一篇说了元素定位过程中的隐式等待,今天我们来探讨一下显示等待.显式等待,其实就是在使用WebDriverWait这个对象,进行等待.显式等待对比隐式等待,多了一些人性化的设置,可以说是更细化的隐式等 ...

  7. Tasks遇到的一些坑,关于在子线程中对线程权限认证。

    一般情况下,不应该在执行多线程认证的时候对其子线程进行身份认证,如:A线程的子线程B和子线程C. 当使用 Parallel.ForEach方法时,只有自身线程能够拥有相对应的权限,其子线程权限则为NU ...

  8. jzoj5888

    tj:暴力連邊會tle 我們發現所有邊的邊權最大值不超過100000,這意味著可以設計和邊權有關的算法,假設現在邊權不相同 枚舉一個現在的邊權i,代表gcd為i,設連的2個點權值為a1∗ia1*ia1 ...

  9. poj3026

    Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12952   Accepted: 4227 Descri ...

  10. 网络编程——http协议

    1.TCP/IP 基本知识 一.概念 TCP/IP协议是一个协议的集合,它是由众多的互联网相关联的协议集合的总称.如图 二.TCP/IP分层管理 TCP/IP模型分为5层:应用层,传输层,网络层,数据 ...