使用dubbo服务中踩过的坑。。。。。

本文详细介绍了在CentOS7环境下,使用JDK8、Tomcat8、Dubbo2.7.1和Zookeeper3.4进行服务部署时遇到的兼容性问题及解决方案,包括旧版监控中心的使用、包名更改引起的启动失败、服务注册IP混乱等问题,并提供了具体的解决步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:
centos7
jdk8
tomcat8
dubbo2.7.1
zookeeper3.4

1,一开始使用jdk12,由于dubbo重新更新之后管理中心改变了,貌似没有使用tomcat项目,所以只有使用旧版的管理中心,最初使用的是2.5.3的管理中心,但是jdk12和jdk8都不兼容,然后百度找了半天找到了兼容jdk8的2.5.4版。

2,2.7.1版的duboo也只支持到jdk8。

3,将dubbo服务提供者项目使用assembly插件打包,我使用的也是dubbo-monitor-simple-2.5.3旧版监控中心,但是打包上传到服务器之后一直启动失败,查看logs/stdout.log,发现错误是找不到或无法加载主类com.alibaba.dubbo.container.Main,我检查了半天xml配置文件和pom配置文件,还是一样的问题,然后太晚了就睡了,睡着之前灵光一闪,想起来dubbo2.7.1已经更改了包名,现在是org.apache.dubbo,第二天早上起来在项目里一搜索,果然启动文件里的包名是错误的,改成新的重新打包就行了。

4,我把其他项目上传部署之后启动一直报错,大概的意思是找不到dubbo服务提供者,127.0.0.1:20880连接失败,管理中心中也警告127.0.0.1无法访问,但是我虚拟机的IP地址根本不是这个。然后又找万能的百度,果然有很多dubbo注册服务IP混乱的问题,大概是在dubbo注册中心注册服务时,由于dubbo的判断条件,直接把提供者的内网IP作为了提供者的IP,这样导致注册的dubbo永远无法被外部访问到,用ifconfig查看有一个lo的网卡IP地址为127.0.0.1,然后有百度很久的解决办法,失败了很多次,最后终于试出来一种成功的办法。
首先更改服务提供者的主机名,用hostname查看所有的虚拟机主机名默认都是localhost.localdomain,centos7永久修改主机名的方法变成了已经很简单的命令,不同于之前的版本:hostnamectl set-hostname xxx。然后hostname再次查看主机名,如果没变就使用service network restart重启网卡,再查看如果还没变可能就要重启虚拟机了。。
但是这样做项目启动还是和之前一样的情况,此时需要在注册中心的服务器上修改/etc/hosts文件:vim /etc/hosts
然后再最后一行加上服务提供者的主机IP地址 服务提供者的主机名(依据自己的虚拟机配置),此时重启zookeeper注册中心,./zkServer restart,然后再重新启动服务提供者来注册服务,现在管理中心的服务提供者IP地址已经正确指向了你的提供者服务器,重新启动项目所在的tomcat,项目启动成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值