dubbo & zookeeper & springMVC

一.安裝準備

1.環境簡介

名稱 版本
OS Mac OS X 10.11.5
JDK 1.8.0_51
dubbo 2.5.4
tomcat 8.0.35
Zookeeper 3.4.8
maven 3.3.9

2.小插曲

想用wget進行下載,發現mac默認是沒有安裝的。用慣了別的Linux環境,相使用個自動安裝工具來安裝wget。讓後就找到了Homebrew。下面首先安裝Homebrew,這個相似CentOS的yum和Ubuntu的apt-get,安裝方法很簡單,執行下面就能夠了: 
ruby -e 「$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)」 
執行上面並安裝成功後,下面讓咱們測試下安裝wget: 
brew install wget 完美,安裝完畢。java

3.編譯dubbo示例

根據網站官方教程: 
http://dubbo.io/Administrator+Guide-zh.htm#AdministratorGuide-zh-%E7%A4%BA%E4%BE%8B%E6%8F%90%E4%BE%9B%E8%80%85%E5%AE%89%E8%A3%85git

發現直接下載assembly的地址已經無效了,到其餘地址下吧。發如今github中有demo代碼,fork到本身帳戶下,克隆到本地。這個是用maven管理的,因此還要準備好maven環境,關於maven環境的搭建此處省略。 
cd dubbo 
mvn install -Dmaven.test.skip=true 
編譯完成後,進入到demo到目錄下將製做好的組件找個地方放置。壓縮包名字爲: 
目錄dubbo/dubbo-demo/dubbo-demo-provider/target下面: 
dubbo-demo-provider-2.5.4-SNAPSHOT-assembly.tar.gzgithub

目錄dubbo/dubbo-demo/dubbo-demo-consumer/target下面: 
dubbo-demo-consumer-2.5.4-SNAPSHOT-assembly.tar.gzweb

目錄dubbo/dubbo-simple/dubbo-monitor-simple/target下面: 
dubbo-monitor-simple-2.5.4-SNAPSHOT-assembly.tar.gzspring

目錄dubbo/dubbo-admin/target下面: 
dubbo-admin-2.5.4-SNAPSHOT.warapache

二.Zookeeper註冊中心安裝

註冊中心有多種選擇,我選擇zookeeper做爲註冊中心。 
wget http://apache.fayea.com/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz 
tar -zxvf zookeeper-3.4.8.tar.gz 
cd zookeeper-3.4.8 
cp conf/zoo_sample.cfg conf/zoo.cfgwindows

不配置集羣,直接啓動 
./bin/zkServer.sh starttomcat

三.安裝dubbo示例

1.示例提供者安裝

tar -zxvf dubbo-demo-provider-2.5.4-SNAPSHOT-assembly.tar.gz 
cd dubbo-demo-provider-2.5.4-SNAPSHOTruby

配置 
vi conf/dubbo.properties 
將其中 
dubbo.registry.address=zookeeper://127.0.0.1:2181
去掉註釋,註釋multicast那個mvc

啓動 
./bin/start.sh 
鏈接到provider 
telnet 127.0.0.1 20880 
輸入help,查看提供的操做

2.示例消費者安裝

tar -zxvf dubbo-demo-consumer-2.5.4-SNAPSHOT-assembly.tar.gz 
cd dubbo-demo-consumer-2.5.4-SNAPSHOT

配置 
vi conf/dubbo.properties 
將其中 
dubbo.registry.address=zookeeper://127.0.0.1:2181
去掉註釋,註釋multicast那個

./bin/start.sh

3.監控中心安裝

tar -zxvf dubbo-monitor-simple-2.5.4-SNAPSHOT-assembly.tar.gz 
cd dubbo-monitor-simple-2.5.4-SNAPSHOT 配置 
vi conf/dubbo.properties 
將其中 
dubbo.registry.address=zookeeper://127.0.0.1:2181
去掉註釋,註釋multicast那個

./bin/start.sh

http://127.0.0.1:8080

4.管理控制檯安裝

將編譯好的dubbo-admin-2.5.4-SNAPSHOT.war拷貝到tomcat下面。配置server.xml,避免和前面監控中心的端口產生衝突。啓動tomcat。 
發現報錯:
Bean property ‘URIType’ is not writable or has an invalid setter method.

具體錯誤及解決方案參考這裏: 
https://github.com/alibaba/dubbo/issues/50 
按照如下4步操做報錯就消失了

一、webx的依賴改成3.1.6版;

<dependency>
    <groupId>com.alibaba.citrus</groupId>
    <artifactId>citrus-webx-all</artifactId>
    <version>3.1.6</version>
</dependency>

二、添加velocity的依賴,我用了1.7;

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity</artifactId>
    <version>1.7</version>
</dependency>

三、對依賴項dubbo添加exclusion,避免引入舊spring

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>${project.parent.version}</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
        </exclusion>
    </exclusions>
</dependency>

四、webx已有spring 3以上的依賴,所以註釋掉dubbo-admin裏面的spring依賴

<!--<dependency>-->
    <!--<groupId>org.springframework</groupId>-->
    <!--<artifactId>spring</artifactId>-->
<!--</dependency>-->

肯定war包解壓後lib目錄沒有spring 3 如下的依賴就行。而後運行正常了。

這裏不須要額外配置,dubbo.properties中默認就是zookeeper的配置。

個人訪問地址是: 
http://127.0.0.1:8888

四.經過SpringMVC加入服務提供者和消費者

dubbo與SpringMVC的集成,我參考了這段: 
http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-%E6%B3%A8%E8%A7%A3%E9%85%8D%E7%BD%AE

新建兩個工程:

dubbo application
test-consumer
test-provider

上兩張張加入後管理控制檯的截圖,後面那張消費者爲何有三個表示不理解,須要繼續研究:

在搭建的過程當中遇到了兩個問題:

問題一: dubbo.xsd文件找不到

將dubbo.xsd下載到本地後,經過如下步驟操做加入,我用的是eclipse:
windows->preferrence->xml->xmlcatalog 
add->catalog entry ->file system 選擇剛剛下載的文件路 徑 
修改key值和配置文件的http://code.alibabatech.com/schema/dubbo/dubbo.xsd 相同

問題的解決方案出處在這裏,感謝做者~ 
http://blog.csdn.net/lxb15959168136/article/details/50225057

問題二: 在dubbo啓動的過程當中報錯誤:java.lang.ClassNotFoundException: javassist.ClassPath

個人作法: 
因爲我是用的maven構建,因此在工程pom.xml中直接加入如下:

<dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.18.2-GA</version> <scope>runtime</scope> </dependency>

最後是編寫的服務提供者和消費者的代碼

https://github.com/mingbozhang/leandubbo

相關文章
相關標籤/搜索