1. 程式人生 > >Maven+SpringMVC+Dubbo+zookeeper 簡單的入門demo配置

Maven+SpringMVC+Dubbo+zookeeper 簡單的入門demo配置

參考:http://blog.csdn.net/aixiaoyang168/article/details/51362675

dubbo是一個分散式服務框架,致力於提供高效能和透明化的RPC遠端服務呼叫方案,是阿里巴巴SOA服務化治理方案的核心框架,每天為2,000+個服務提供3,000,000,000+次訪問量支援,並被廣泛應用於阿里巴巴集團的各成員站點(其他的詳細介紹可以檢視dubbo的官網地址http://dubbo.io/,寫的很詳細!)。

該demo是基於maven搭建的,專案架構基於SpringMVC,這裡忽略spring的基本配置,著重介紹下dubbo部分的配置,以及dubbo後臺管理系統

一、軟體環境 
1、zookeeper 
下載地址:

https://zookeeper.apache.org/releases.html 下載最新版的zookeeper,我這裡使用的版本是 zookeeper-3.4.5.tar.gz 
2、springMVC (maven方式引入) 
3、dubbo (maven方式引入)

二、專案搭建 
這裡我搭建了三個專案,分別為dubbo-api,dubbo-consumer,dubbo-provider

dubbo-api:主要是介面定義,供dubbo-consumer呼叫,以及dubbo-provider的service層去實現該介面,分離這一層的好處就是前端專案呼叫介面時候,直接呼叫dubbo-api的介面即可,不需要關注後端如何實現;而service層來具體實現該介面,進行業務邏輯處理,不需要關注dubbo-consumer 的controller層如何呼叫。 


dubbo-consumer:主要controller層控制跳轉等。 


dubbo-provider:主要是service實現,結合資料層實現後端業務邏輯處理。

專案搭建完成之後,的結構圖如下:

 

三、專案配置 
1、dubbo-api 

Maven配置:

<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.dubbo</groupId>

    <artifactId>dubbo-api</artifactId>

    <packaging>jar</packaging>

    <version>1.0-SNAPSHOT</version>

    <name>dubbo-api</name>

    <url>http://maven.apache.org</url>

    <build>

       <plugins>

           <plugin>

              <artifactId>maven-compiler-plugin</artifactId>

              <version>2.0.2</version>

              <configuration>

                  <source>1.5</source>

                  <target>1.5</target>

                  <fork>true</fork>

                  <meminitial>128m</meminitial>

                  <maxmem>512m</maxmem>

                  <encoding>UTF-8</encoding>

              </configuration>

           </plugin>

           <plugin>

              <artifactId>maven-eclipse-plugin</artifactId>

              <version>2.5.1</version>

              <configuration>

                  <additionalProjectnatures>

                     <projectnature>

                         org.springframework.ide.eclipse.core.springnature

                     </projectnature>

                  </additionalProjectnatures>

                  <additionalBuildcommands>

                     <buildcommand>

                         org.springframework.ide.eclipse.core.springbuilder

                     </buildcommand>

                  </additionalBuildcommands>

                  <downloadSources>false</downloadSources>

                  <downloadJavadocs>false</downloadJavadocs>

                  <wtpversion>1.5</wtpversion>

              </configuration>

           </plugin>

           <!-- 要加上下面的一句,否則執行:mvn package -Dmaven.test.skip=true的時候會報錯 -->

           <plugin>

              <artifactId>maven-war-plugin</artifactId>

              <version>2.1.1</version>

           </plugin>

       </plugins>

    </build>

    <properties>

       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

       <spring.version>4.0.3.RELEASE</spring.version>

       <org.codehaus.jackson>1.9.13</org.codehaus.jackson>

    </properties>

    <dependencies>

       <!-- Test -->

       <dependency>

           <groupId>junit</groupId>

           <artifactId>junit</artifactId>

           <version>4.7</version>

           <scope>test</scope>

       </dependency>

    </dependencies>

</project>


新建TestService介面類

package com.dubbo.service;

/**

 * dubbo學習地址:http://blog.csdn.net/aixiaoyang168/article/details/51362675

 */

public interface TestService {

    /**

     * 測試發訊息

     * @param name

     * @return

     */

    public String sayHello(String name);

}

注意:這個專案最終打包成jar檔案,直接maven引入到另外兩個專案中

2、dubbo-consumer 

Maven依賴:

<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.dubbo</groupId>

    <artifactId>dubbo-consumer</artifactId>

    <packaging>war</packaging>

    <version>1.0-SNAPSHOT</version>

    <name>dubbo-consumer</name>

    <url>http://maven.apache.org</url>

    <build>

        <finalName>dubbo-consumer</finalName>

       <plugins>

           <plugin>

              <artifactId>maven-compiler-plugin</artifactId>

              <version>2.0.2</version>

              <configuration>

                  <source>1.5</source>

                  <target>1.5</target>

                  <fork>true</fork>

                  <meminitial>128m</meminitial>

                  <maxmem>512m</maxmem>

                  <encoding>UTF-8</encoding>

              </configuration>

           </plugin>

           <plugin>

              <artifactId>maven-eclipse-plugin</artifactId>

              <version>2.5.1</version>

              <configuration>

                  <additionalProjectnatures>

                     <projectnature>

                         org.springframework.ide.eclipse.core.springnature

                     </projectnature>

                  </additionalProjectnatures>

                  <additionalBuildcommands>

                     <buildcommand>

                         org.springframework.ide.eclipse.core.springbuilder

                     </buildcommand>

                  </additionalBuildcommands>

                  <downloadSources>false</downloadSources>

                  <downloadJavadocs>false</downloadJavadocs>

                  <wtpversion>1.5</wtpversion>

              </configuration>

           </plugin>

           <!-- 要加上下面的一句,否則執行:mvn package -Dmaven.test.skip=true的時候會報錯 -->

           <plugin>

              <artifactId>maven-war-plugin</artifactId>

              <version>2.1.1</version>

           </plugin>

       </plugins>

    </build>

    <properties>

       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

       <spring.version>4.0.3.RELEASE</spring.version>

       <org.codehaus.jackson>1.9.13</org.codehaus.jackson>

    </properties>

    <dependencies>

       <!-- 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-orm</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-test</artifactId>

           <version>${spring.version}</version>

       </dependency>

       <dependency>

           <groupId>org.springframework</groupId>

           <artifactId>spring-aspects</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-jms</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-context-support</artifactId>

           <version>${spring.version}</version>

       </dependency>

       <dependency>

           <groupId>org.springframework</groupId>

           <artifactId>spring-oxm</artifactId>

           <version>${spring.version}</version>

       </dependency>

       <dependency>

           <groupId>org.slf4j</groupId>

           <artifactId>slf4j-api</artifactId>

           <version>1.7.2</version>

       </dependency>

       <dependency>

           <groupId>log4j</groupId>

           <artifactId>log4j</artifactId>

           <version>1.2.17</version>

       </dependency>

       <dependency>

           <groupId>org.slf4j</groupId>

           <artifactId>slf4j-log4j12</artifactId>

           <version>1.7.2</version>

       </dependency>

       <dependency>

            <groupId>com.thoughtworks.xstream</groupId>

            <artifactId>xstream</artifactId>

           <version>1.2.2</version>

        </dependency>

       <dependency>

           <groupId>ant</groupId>

           <artifactId>ant</artifactId>

           <version>1.7.0</version>

       </dependency>

       <!-- Test -->

       <dependency>

           <groupId>junit</groupId>

           <artifactId>junit</artifactId>

           <version>4.7</version>

           <scope>test</scope>

       </dependency>

       <dependency>

           <groupId>aopalliance</groupId>

           <artifactId>aopalliance</artifactId>

           <version>1.0</version>

       </dependency>

       <dependency>

           <groupId>commons-dbcp</groupId>

           <artifactId>commons-dbcp</artifactId>

           <version>1.3</version>

       </dependency>

       <dependency>

           <groupId>commons-fileupload</groupId>

           <artifactId>commons-fileupload</artifactId>

           <version>1.3</version>

       </dependency>

       <!--

       <dependency>

           <groupId>commons-logging</groupId>

           <artifactId>commons-logging</artifactId>

           <version>1.1.3</version>

       </dependency>

       -->

       <dependency>

           <groupId>commons-pool</groupId>

           <artifactId>commons-pool</artifactId>

           <version>1.5.4</version>

       </dependency>

       <dependency>

           <groupId>javax.servlet</groupId>

           <artifactId>jstl</artifactId>

           <version>1.1.2</version>

       </dependency>

       <!--

       <dependency>

           <groupId>com.oracle</groupId>

           <artifactId>ojdbc14</artifactId>

           <version>10.2.0.3.0</version>

       </dependency>

        -->

       <dependency>

           <groupId>taglibs</groupId>

           <artifactId>standard</artifactId>

           <version>1.1.2</version>

       </dependency>

       <dependency>

           <groupId>commons-codec</groupId>

           <artifactId>commons-codec</artifactId>

           <version>1.5</version>

       </dependency>

       <dependency>

           <groupId>commons-lang</groupId>

           <artifactId>commons-lang</artifactId>

           <version>2.1</version>

       </dependency>

       <dependency>

           <groupId>net.sf.ezmorph</groupId>

           <artifactId>ezmorph</artifactId>

           <version>1.0.6</version>

       </dependency>

       <dependency>

           <groupId>net.sf.json-lib</groupId>

           <artifactId>json-lib</artifactI