dubbo2.5.6從下載到編譯成功而且部署成功過程

1,下載dubbo

首先從 github 下載源代碼並閱讀 readme.md ,參考該文檔,首先下載 opensesame,並編譯:
$ git clone https://github.com/alibaba/opensesame.git (或者 git@github.com:alibaba/opensesame.git)
$ cd opensesame
$ mvn installhtml

而後,下載 dubbo 並編譯:
$ git clone https://github.com/alibaba/dubbo.git (或者 git@github.com:alibaba/dubbo.git)
$ cd dubbo
$ mvn clean install -Dmaven.test.skipjava

編譯成功以後,生成 idea 相關配置文件:$ mvn idea:idea    接下來,將代碼經過 maven 的方式導入到 idea ide 中
生成eclipse相關配置文件:$ mvn eclipse:eclipse             接下來,將代碼經過 maven 的方式導入到 eclipse 中linux

若是順利的話,到此結束。git

2,clean install命令執行報錯現象

可是不少人都會遇到各類各樣的問題,尤爲是新手小白對於首次接觸dubbo這樣大型的maven架構項目,和dubbo自己維護緩慢(有段時間中止維護),源碼版本跟不上時代(好比spring版本過老)等問題,仍是有必要把遇到的問題和解決方案寫出來的。github

好比我在執行命令: mvn clean install -Dmaven.test.skip 時就遇到這樣的錯誤:web

複製代碼
複製代碼
 1 [INFO] ------------------------------------------------------------------------
 2 [INFO] Reactor Summary:
 3 [INFO] 
 4 [INFO] dubbo-parent ....................................... SUCCESS [  1.053 s]
 5 [INFO] Hessian Lite(Alibaba embed version) ................ SUCCESS [  5.029 s]
 6 [INFO] dubbo-common ....................................... FAILURE [  0.816 s]
 7 [INFO] dubbo-container .................................... SKIPPED
 8 [INFO] dubbo-container-api ................................ SKIPPED
 9 [INFO] dubbo-container-spring ............................. SKIPPED
10 [INFO] dubbo-container-jetty .............................. SKIPPED
11 [INFO] dubbo-container-log4j .............................. SKIPPED
12 [INFO] dubbo-container-logback ............................ SKIPPED
13 [INFO] dubbo-remoting ..................................... SKIPPED
14 [INFO] dubbo-remoting-api ................................. SKIPPED
15 [INFO] dubbo-remoting-netty ............................... SKIPPED
16 [INFO] 省略後面其它項目...由於都是SKIPPED狀態
複製代碼
複製代碼

 看到上圖的子模塊編譯順序了嗎?這就是dubbo整個系統裏的模塊依賴順序,越是靠前,越是基礎模塊,越是其它模塊所依賴的重要模塊。spring

複製代碼
複製代碼
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.641 s
[INFO] Finished at: 2017-10-21T15:29:08+08:00
[INFO] Final Memory: 20M/153M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project dubbo-common: Compilation failure -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :dubbo-common
複製代碼
複製代碼

 

能夠看到執行到dubbo-common子模塊時就編譯失敗了,後面其它子模塊由於此失敗所有被maven跳過執行。apache

3,clean install命令執行失敗解決方案

install 失敗的最終緣由是我本地的org.javassist下的jar包壞掉了,我也不明白爲何由maven統一管理下,其中個別下載的jar包是壞的,不能用的……具體表現爲:項目的Maven Dependencies目錄下明明有這個javassist-3.20.0-GA.jar,可是在java源碼文件裏的import  javassist.ClassPool; 一直編譯報錯,說明項目裏並無成功引用該jar,但是Maven Dependencies目錄下的其它jar裏的class確引用成功,那麼緣由只有一個:javassist-3.20.0-GA.jar壞掉了。解決方法:把maven庫裏的javassist包3.20.0 版本整個目錄刪掉,從新maven編譯項目(項目右鍵 -> Maven Update)就OK。windows

4,編譯子模塊解決方案(大部分人死在不會本身成功編譯dubbo上)

編譯的最終目的:成功獲得dubbo-admin.war,就算整個項目編譯成功。api

編譯前把dubbo/pom.xml此文件裏的JDK版本從1.6改成1.7:

<java_source_version>1.7</java_source_version>
<java_target_version>1.7</java_target_version>
<file_encoding>UTF-8</file_encoding>

而後把項目的face裏的JDK改成1.7,有的還須要把eclipse裏面的編譯級別改爲1.7。

編譯任何一個子模塊的解決方案相同,此處只列舉一個子模塊的maven項目在eclipse中導入例子。

在eclipse中Package Explorer空白處,右鍵 -> Import -> Maven -> Existing Maven Projects -> Maven Projects -> Browse按鈕選擇dubbo-remoting-api項目,相同操做再次選擇dubbo-remoting-default項目,而後在Problems選項卡中能夠看到不少的Errors信息,那是由於依賴子模塊還沒有編譯經過。其它子模塊導入方式相同。

 1 [INFO] ------------------------------------------------------------------------
 2 [INFO] Reactor Summary:
 3 [INFO] 
 4 [INFO] dubbo-parent ....................................... SUCCESS [  1.053 s]
 5 [INFO] Hessian Lite(Alibaba embed version) ................ SUCCESS [  5.029 s]
 6 [INFO] dubbo-common ....................................... FAILURE [  0.816 s]
 7 [INFO] dubbo-container .................................... SKIPPED
 8 [INFO] dubbo-container-api ................................ SKIPPED
 9 [INFO] dubbo-container-spring ............................. SKIPPED
10 [INFO] dubbo-container-jetty .............................. SKIPPED
11 [INFO] dubbo-container-log4j .............................. SKIPPED
12 [INFO] dubbo-container-logback ............................ SKIPPED
13 [INFO] dubbo-remoting ..................................... SKIPPED

最後只要按照此打印列表中把全部子模塊順序maven update一下,就能夠獲得正確的dubbo-admin.war。

 5,部署dubbo-admin.war

把dubbo-admin.war複製到tomcat的webapp目錄下,重命名爲ROOT.war,刪掉webapps下舊的全部項目,啓動以後訪問127.0.0.1:8080 即部署成功。

這裏注意,若是你事先沒有成功啓動zookeeper,黑色的dos窗口會一直線程阻塞監聽zookeeper 端口,直到zookeeper啓動成功,才繼續啓動線程,而後纔是war部署成功。

瀏覽器訪問127.0.0.1:8080 會彈出一個登陸窗口,默認是ROOT / ROOT 

6,dubbo-admin部署驗證成功

 

 

7,dubbo-demo測試成功

dubbo-demo中有3個子模塊項目,分別分3此用導入maven項目形式導入到eclipse裏,成爲看上去的3個分開的項目,每一個項目進行打包操做:項目右鍵 -> Run As -> Maven install ,能夠看到在每一個項目的target目錄下各生成了一個本身項目名字命名的jar,表示這些項目編譯成功。

順序執行如下操做,測試demo:

1,啓動zookeeper,默認監聽2181端口。在windows下執行zookeeper-3.4.9\bin\zkServer.cmd,在linux下執行zkServer.sh

2,啓動dubbo-admin。參考第5小節《部署dubbo-admin.war》

3,demo下的3個項目分別進行maven install操做生成3個jar包。

4,往zookeeper註冊中心註冊咱們的應用程序,這是dubbo治理咱們應用程序服務的關鍵!(也能夠選擇其它的註冊中心)修改provider配置文件META-INF/spring/dubbo-demo-provider.xml和consumer配置文件META-INF/spring/dubbo-demo-consumer.xml,都進行如下操做:

註釋掉:<!-- <dubbo:registry address="multicast://224.5.6.7:1234"/> -->

添加:<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />

5,執行(provider提供者)main方法:dubbo\dubbo-demo\dubbo-demo-provider\src\main\java\com\alibaba\dubbo\demo\provider\Provider.java :

 

6,執行(consumer消費者)main方法:dubbo\dubbo-demo\dubbo-demo-consumer\src\main\java\com\alibaba\dubbo\demo\consumer\Consumer.java

消費者發送消息成功,服務提供者響應消息成功,demo測試成功。

 

服務者註冊成功。 

 

消費者註冊成功。 

 
分類:  doubbo
標籤:  doubbo
相關文章
相關標籤/搜索