解决 spring boot dubbo BeanCreationException: Error creating bean with name
问题截图
问题分析关键词:
1)BeanCreationException: Error creating bean with name ‘com.alibaba.dubbo.spring.boot.DubboProviderAutoConfiguration’: Invocation of init method failed
2)cause: Zookeeper is not connected yet!
上图发生的原因是,Zookeeper没有链接,所以导致无法加载DubboProviderAutoConfiguration类相关的方法。
问题解决排查
1)Zookeeper 安装
下载地址:https://zookeeper.apache.org/releases.html
这里要注意,从Zookeeper 3.5.9开始,每个版本下面有两个安装包,选择第一个安装。
安装步骤:
1)解压安装包 sudo tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz
2)修改安装包名称 sudo mv apache-zookeeper-3.5.9-bin zookeeper
3)cd进入到zookeeper文件目录,创建两个文件夹
data用来存储数据,log用来存放log信息
sudo mkdir data
sudo mkdir log
4)cd进入到zookeeper下的conf目录 ,sudo mv zoo_sample.cfg
改为zoo.cfg,目的为了方便修改,命名随意。
5)修改zoo.cfg文件配置 sudo vim zoo.cfg ,添加如下两个配置
dataDir=/文件路径/zookeeper/data
dataLogDir=/文件路径/zookeeper/logo
6)启动 sudo ./zkServer.sh start
7)查看状态 sudo ./zkServer.sh status
8)停止 sudo ./zkServer.sh stop
zookeeper安装完成end
2)排查provider提供者项目
properties配置文件
pom配置文件
server实现类
这里的@Service必须是com.alibaba.dubbo.config.annotation.Service包下面的类,而不是org.springframework.stereotype.Service下面的@Service,这个特别注意。
项目启动类
添加上dubbo的扫描类@EnableDubboConfiguration
结合以上信息,我们一个一个排查
1)首先 cause: Zookeeper is not connected yet!这个问题,表示Zookeeper没有连接上,首先查看一下Zookeeper状态。
在Zookeeper的bin目录下打开终端,输入 sudo ./zkServer.sh status查看Zookeeper状态信息。
可以看到我们的Zookeeper是开启状态
端口号port:2181
地址address:localhost
注意项目中的properties文件中的spring.dubbo.registry 必须和Zookeeper的port和address对应上。
在终端输入ifconfig查看你的本机地址信息
到这里可以发现我在properties配置的是192.168.60.20:2181,明显对应不上,修改成192.168.60.214再此运行。
运行成功!!!!!
这是修改后的配置,切记注册地址一定要和你的zookeeper配置地址对应上。你可以使用ipv4地址127.0.0.1或者本机ipv6地址,也就是我这里的192.168.60.214。两个都是指向本机地址。
排查思路
1)保证Zookeeper运行状态是start
2)provider注册地址对应Zookeeper的localhost和port
3)@Service引用包是com.alibaba.dubbo.config.annotation.Service
4)启动类添加@EnableDubboConfiguration扫描类
end
还没有评论,来说两句吧...