No provider available from registry 127.0.0.1:* for service com.lvjun.service.DictService on consume

在我们用dubbo调用服务时,可能会出现该错误。这个错误的原因是因为在注册中心找不到提供者。初学者可能会遇到这种错误。这种情况下是有消费者但是提供者没有注册成功。

首先查看提供者和消费者的情况,可以用命令来查看是否注册成功,我用的是zookeeper。打开bin下的zkCli.cmd文件

 可以看见提供者没有注册成功,消费者注册成功了。

出现这种情况一般有一下几个可能

1.没有启动提供者服务或者忘记了写相关配置文件(或者消费者比提供者先启动)

这种情况很常见,也很容易解决,打开提供者服务或者写好配置文件重启就行了

2.在提供者的*ServiceImpl类中,@Service注解引用错误,检查引用的是不是spring框架的Service注解,把它改成alibaba.dobbo包下的注解。

3.配置文件错误:

        在写ServiceImpl类时会涉及到事务的问题要加@Transactional注解,但是在加了这个注解后导致提供者无法发布,因为在加了注解后Spring会为此类基于动态代理技术创建代理对象,代理对象的完整类名为com.sun.proxy.$Proxy35,导致dubbo在进行包匹配时吗,没有成功。没有扫描到代理类对象。这时需要在xml配置文件中添加开启事务支持时proxy-target-class属性为true,作用是使用cglib类创建代理类对象

        修改两个地方在xmll文件装配了事务管理器下加入

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

在*ServiceImpl的@Service注解后指定接口

@Service(interfaceClass = DictService.class)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值