打算自己做一些事情,需要實現分佈式的系統,朋友的推薦下試用了一下dubbo,感覺能滿足自己的要求。於是開始學習,這個文章作爲記錄。
dubbo官方的實例和網絡上的例子,大多都是使用API啓動。而根據我個人的使用需要,要搭建一個Spring+SpringMVC+dubbo的開發環境,並要使用spring自動加載。話不多說進入正題:
1,首先創建 提供者provider 和 消費者consumer 兩個工程(分別是dp、dc)。
使用Eclipse創建Maven工程。
dp 的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.xuyang</groupId>
<artifactId>dp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>dp Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 設置 Spring 的版本 -->
<org.springframework.version>3.1.4.RELEASE</org.springframework.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- dubbo start-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.6</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<!-- dubbo end-->
</dependencies>
<build>
<finalName>dp</finalName>
</build>
<packaging>war</packaging>
</project>
問題:
由於當前使用的spring版本是3.1,而dubbo使用的是spring是2.x;所以需要處理spring包衝突。方法如下:
找到dubbo依賴的spring2.5.6,右擊使用maven--> Exclude Maven Artifact
效果參見 pom.xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
查看工程中的 maven包引用:
已經沒有spring2.5.6了。