博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dubbo2.5.6从下载到编译成功并且部署成功过程
阅读量:5357 次
发布时间:2019-06-15

本文共 6121 字,大约阅读时间需要 20 分钟。

本文基于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 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 ............................. SKIPPED10 [INFO] dubbo-container-jetty .............................. SKIPPED11 [INFO] dubbo-container-log4j .............................. SKIPPED12 [INFO] dubbo-container-logback ............................ SKIPPED13 [INFO] dubbo-remoting ..................................... SKIPPED14 [INFO] dubbo-remoting-api ................................. SKIPPED15 [INFO] dubbo-remoting-netty ............................... SKIPPED16 [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 
-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:

1.7
1.7
UTF-8

然后把项目的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 ............................. SKIPPED10 [INFO] dubbo-container-jetty .............................. SKIPPED11 [INFO] dubbo-container-log4j .............................. SKIPPED12 [INFO] dubbo-container-logback ............................ SKIPPED13 [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测试成功。

 

服务者注册成功。 

 

消费者注册成功。 

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.

转载于:https://www.cnblogs.com/a8457013/p/7729832.html

你可能感兴趣的文章
野指针(Wild pointer)和悬垂指针(dangling pointer)
查看>>
Vue2.0-token权限处理
查看>>
短小记录
查看>>
Git简略教程
查看>>
从菜鸟走向大数据高手
查看>>
《JAVA高并发编程详解》-七种单例模式
查看>>
使用scipy.spatial.Delaunay 三角网的构建
查看>>
PHP常用验证正则表达式
查看>>
218多校第九场 HDU 6424 (数学)
查看>>
第五周助教小结
查看>>
C#中对XML的操作
查看>>
react.js 你应知道的9件事
查看>>
projecteuler----&gt;problem=9----Special Pythagorean triplet
查看>>
hdu 5015 大数量反复类似操作问题/ 矩阵高速幂
查看>>
[注意事项&amp;车轮]java源代码 产生局部javadoc api档
查看>>
关于微软公有云Azure会计标准
查看>>
SQLServer-----使用jTDS连接SQLServer数据库
查看>>
sqlplus登录、连接命令
查看>>
SSLOJ 1297.GF打Dota
查看>>
简述WebService与.NET Remoting的区别及适应场合
查看>>