Spring 集成 Dubbo 启动容器报【Injection of @DubboReference dependencies is failed】错误

目录

问题

排查

解决


问题

工作中的项目远程调用技术使用的是 dubbo,在一次需求中,在自己负责的模块中提供了一个  dubbo 接口给其他模块调用,在提测前需要自测一下接口是否能够调通,功能是否正常。所以在本地自测时,就是简单写了一个测试接口,然后使用 @DubboReference 来注入依赖,启动服务后本地调一下测试接口,看看是否能正常执行就完事了。

然而启动容器却失败了,报【Injection of @DubboReference dependencies is failed

排查

从报错的语句上来看,就是注入 @DubboReference 注解修饰的依赖失败了,所以才导致了 Spring 容器启动失败了,但是仅知道这个是没有办法解决问题的。

一般遇到错误信息,可以顺着输出的日志继续往下找日志输出,绝大多数时候都能够找到报错误的根本原因,以本文例子为例,顺着【Injection of @DubboReference dependencies is failed】继续往下看日志输出,就能够看到【nested exception is org.apache.dubbo.rpc.RpcException: Fail to start server(url: dubbo:\/\/xxx.xxx.xxx.xxx:21876】的日志输出。

这下就清楚了,其实就是项目启动时启动 dubbo 服务失败了,无非就是被占用了端口号。估计就是之前在本地 debug 时频繁重启项目,某一次关闭服务时不够优雅,就导致了 dubbo 服务并没有被关闭,所以在下一次启动时就会出现端口被占用的情况,导致服务启动失败。

解决

window 开发中,直接打开命令行

通过 netstat 来查找对应端口号的进程ID

netstat -ano |findstr "端口号"

本文例子的错误,端口号就是 21876

netstat -ano |findstr "21876"

找到 dubbo 服务对应的进程ID "6432"

通过 taskkill 来强制结束进程即可

taskkill /f /t /pid "进程ID"

执行删除进程命令

taskkill /f /t /pid "6432"

这样再次启动就能够成功启动服务了 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值