zoukankan      html  css  js  c++  java
  • dubbo2.5.6从下载到编译成功并且部署成功过程

    本文基于dubbo2.5.6版本

    原文链接:http://www.cnblogs.com/zhuwenjoyce/

     
     
     

    1,下载dubbo

    首先从 github 下载源代码并阅读 readme.md ,参考该文档,首先下载 opensesame,并编译:
    $ git clone https://github.com/alibaba/opensesame.git (或者 git@github.com:alibaba/opensesame.git)
    $ cd opensesame
    $ mvn install

    然后,下载 dubbo 并编译:
    $ git clone https://github.com/alibaba/dubbo.git (或者 git@github.com:alibaba/dubbo.git)
    $ cd dubbo
    $ mvn clean install -Dmaven.test.skip

    编译成功之后,生成 idea 相关配置文件:$ mvn idea:idea    接下来,将代码通过 maven 的方式导入到 idea ide 中
    生成eclipse相关配置文件:$ mvn eclipse:eclipse             接下来,将代码通过 maven 的方式导入到 eclipse 中

    如果顺利的话,到此结束。

    2,clean install命令执行报错现象

    但是很多人都会遇到各种各样的问题,尤其是新手小白对于首次接触dubbo这样大型的maven架构项目,和dubbo本身维护缓慢(有段时间停止维护),源码版本跟不上时代(比如spring版本过老)等问题,还是有必要把遇到的问题和解决方案写出来的。

    比如我在执行命令: mvn clean install -Dmaven.test.skip 时就遇到这样的错误:

    复制代码
     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整个系统里的模块依赖顺序,越是靠前,越是基础模块,越是其它模块所依赖的重要模块。

    复制代码
    [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跳过执行。

    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。

    4,编译子模块解决方案(大部分人死在不会自己成功编译dubbo上)

    编译的最终目的:成功得到dubbo-admin.war,就算整个项目编译成功。

    编译前把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.9inzkServer.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方法:dubbodubbo-demodubbo-demo-providersrcmainjavacomalibabadubbodemoproviderProvider.java :

     

    6,执行(consumer消费者)main方法:dubbodubbo-demodubbo-demo-consumersrcmainjavacomalibabadubbodemoconsumerConsumer.java

    消费者发送消息成功,服务提供者响应消息成功,demo测试成功。

    服务者注册成功。 

    消费者注册成功。 

    I am a boy, my name is baby. If you want to contact to me, please send any to email 1115198844@qq.com, I will reply you.
  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/a8457013/p/7729832.html
Copyright © 2011-2022 走看看