您的位置:首页 > 大数据 > 人工智能

异常处理com.alibaba.dubbo.rpc.RpcException: No provider available from registry 127.0.0.1:2181 for

2020-06-23 04:47 1776 查看

无法找到对应注册的Dubbo服务问题解决

  • 解决方法
  • 总结 使用规范的接口定义,指定清楚接口类的字节码,这才是最好的方式!
  • 启动了dubbo,并且服务已经正常运行,却在dubbo里找不到对应的服务!

    com.alibaba.dubbo.rpc.RpcException: No provider available from registry 127.0.0.1:2181 for service com.xxx.xxx.user.facade.service.xxx on consumer 192.168.xxx.xx use dubbo version 2.6.0, may be providers disabled or not registered ?
    今天进行dubbo调用的时候遇到上面的服务找不到问题。定位到这个报错的注册类,发现问题出在注解上面。
    @Service
    public class XxxImpl implements Xxx{
    ...

    出现该问题的先决条件

    1.@Service 没有指明接口的字节码:@Service(interfaceClass = Xxx.class)。
    2.在1的情况下该实现类里的一些方法添加了@Transactional注解。

    图片:
    满足这两个条件后,该接口本来该注册到dubbo上的,却注册成了org.springframework.aop.SpringProxy代理类。所以调用服务时候就会提示may be providers disabled or not registered ?找不到的原因在这里。

    解决方法

    1.第一种去掉@Transactional注解。这样操作并不好,因为这个注解我们经常会用到,并且有着重要的作用。
    2.第二种@Service 指明接口类的字节码:@Service(interfaceClass = Xxx.class)。这才是规范的接口声明方式。并且不会和@Transactional注解冲突而导致注册org.springframework.aop.SpringProxy代理类。
    @Service(interfaceClass = Xxx.class)
    public class XxxImpl implements Xxx{
    ...

    总结 使用规范的接口定义,指定清楚接口类的字节码,这才是最好的方式!

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐