先上一个官网的介绍http://dubbo.io/Home-zh.htm,如果感兴趣可以看看。
接下来博主将会以自己渣渣的身份来说明一下如何实现包含dubbo、zookeeper、Spring、SpringMVC的一个简单项目。由于近期想要迁移到IDEA,所以就当体验一下IDEA吧!好了,废话不说了,上图才是王道!!!
项目结构
项目源码:
git传送门
csdn传送门
1、api-dubbo;——统一的接口,用来连接消费者和生产者,最后打成jar包
2、consumer-dubbo;——消费者,也就是web层,接口的调用者,最后打成war包;
3、producer-dubbo;——生产者,也就是业务层,接口的服务提供者,最后打成war包;
这里我们先不使用zookeeper,先通过直连的形式,后面再加上zookeeper。凡事都是入门开始的嘛!入门不就是HelloWorld么?
写了好久,居然没了,而且是两次,无心吐槽!!!
所以可能不能再回到原来的激情了…
先献上完整的项目结构:
接口层
很简单,一个接口定义,一个pom文件,就完事了!
统一接口
package com.cjzheng.dubbo.api;
import java.util.Map;
/**
* @date: 2017年2月27日下午2:58:21
* @author: zhengchaojie
* @version: v1.0
*/
public interface IControlService {
public String sayHello(Map<String, Object> paramsMap);
}
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.cjzheng.dubbo</groupId>
<artifactId>api-dubbo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<finalName>api</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
网络层
由于这一层主要是负责处理客户端发来的请求,所以我们就需要定义个controller来处理,由于是web项目,所以需要配置web.xml,同时需要处理Spring、SpringMVC、dubbo等配置文件。
这里首先需要解决的是jar依赖问题,所以需要解决:dubbo、SpringMVC以及接口的依赖。以下pom文件是最少的配置
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.cjzheng.dubbo</groupId>
<artifactId>consumer-dubbo</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>consumer-dubbo Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.cjzheng.dubbo</groupId>
<artifactId>api-dubbo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>