解决dubbo 升级至apache 2.7.18版本发生Zookeeper连接失败问题
问题描述
最近在做系统的架构升级,升级应用dubbo版本号至apache 2.7.18版,发生Caused by: java.lang.IllegalStateException: Failed to connect with zookeeper, pls check if url zookeeper://192.168.11.13:2149/ConfigCenterConfig?check=true&config-file=dubbo.properties&group=dubbo&highest-priority=false&timeout=3000 is correct.
错误。但这里奇怪的是,其他应用是没问题的。于是乎,将问题锁定在jar 包冲突上。
以下是详细错误信息。
错误信息
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxxUserServiceImpl': Injection of @DubboReference dependencies is failed; nested exception is java.lang.IllegalStateException: Failed to connect with zookeeper, pls check if url zookeeper://192.168.11.13:2181/ConfigCenterConfig?check=true&config-file=dubbo.properties&group=dubbo&highest-priority=false&timeout=3000 is correct.
at com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor.postProcessPropertyValues(AbstractAnnotationBeanPostProcessor.java:183)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1430)
at
…… org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:318)
... 49 common frames omitted
Caused by: java.lang.IllegalStateException: Failed to connect with zookeeper, pls check if url zookeeper://192.168.11.13:2149/ConfigCenterConfig?check=true&config-file=dubbo.properties&group=dubbo&highest-priority=false&timeout=3000 is correct.
at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration.<init>(ZookeeperDynamicConfiguration.java:69)
at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory.createDynamicConfiguration(ZookeeperDynamicConfigurationFactory.java:43)
at
……
com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor.postProcessPropertyValues(AbstractAnnotationBeanPostProcessor.java:179)
... 65 common frames omitted
2023-03-27 18:59:41,758 INFO 3018 --- [ main] [org.apache.dubbo.spring.boot.context.event.WelcomeLogoApplicationListener:63] : [0]
:: Dubbo Spring Boot (v2.7.18) : https://github.com/apache/dubbo-spring-boot-project
:: Dubbo (v2.7.18) : https://github.com/apache/dubbo
:: Discuss group : dev@dubbo.apache.org
排查解决
1)打包启动正常的应用,解压打包后的springboot jar。查看其BOOT-INF目录下的lib。将依赖的lib 列表,复制其名称,写入good-libs.txt文件。
2)同样的方法,打包启动失败的应用,查看其springboot 最终 lib 依赖包列表,复制其名称,写入bad-libs.txt文件。
3)比对bad-lib.txt 、good-lib.txt,寻找两个包依赖不同之处,重点关注dubbo、zookeeper、curator相关的包。
果然,经过一番对比,发现是curator-client 版本不一致。
4)查证 curator-client maven 依赖仲裁。
原因是maven 发生依赖冲突时,最终采用了最短路径(路径只有2级,其他的版本都是3级路径),选择最底下的2.7.1版本。
现在只需要让2.10.0的版本被采纳就行了。
解决方法
1)方法一:直接声明curator-client坐标,让其优先级最高
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-client</artifactId>
<version>2.10.0</version>
</dependency>
2)方法二:排除 curator-client 2.7.1 的依赖。在引入2.7.1版本的地方,exclusion掉依赖即可。
<exclusion>
<artifactId>curator-client</artifactId>
<groupId>org.apache.curator</groupId>
</exclusion>
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhhehkh
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22