dubbo升级至2.7.18版本后,客户端调用失败解决方案和原因

news/2025/1/18 8:28:03/

        因安全需要决定对dubbo进行安全升级,升级至2.7.22版本,升级过程中遇到泛化调用失败

        主要错误提示:

                

Failed to invoke the method $invoke in the service org.apache.dubbo.rpc.service.GenericService. No provider available for the service XXXXX from registry 127.0.0.1:2181 on the consumer xxxxxx using the dubbo version 2.7.18. Please check if the providers have been started and registered. 
org.apache.dubbo.rpc.RpcException: Failed to invoke the method $invoke in the service org.apache.dubbo.rpc.service.GenericService. No provider available for the service XXXXX from registry 127.0.0.1:2181 on the consumer xxxxxx using the dubbo version 2.7.18. Please check if the providers have been started and registered.at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.checkInvokers(AbstractClusterInvoker.java:288) ~[dubbo-2.7.18.jar:2.7.18]at org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:59) ~[dubbo-2.7.18.jar:2.7.18]at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:265) ~[dubbo-2.7.18.jar:2.7.18]at org.apache.dubbo.rpc.cluster.interceptor.ClusterInterceptor.intercept(ClusterInterceptor.java:47) ~[dubbo-2.7.18.jar:2.7.18]at org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster$InterceptorInvokerNode.invoke(AbstractCluster.java:92) ~[dubbo-2.7.18.jar:2.7.18]at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:98) ~[dubbo-2.7.18.jar:2.7.18]at org.apache.dubbo.registry.client.migration.MigrationInvoker.invoke(MigrationInvoker.java:170) ~[dubbo-2.7.18.jar:2.7.18]

原因: 

dubbo服务提供者注册时添加了 dubbo.provider.tag 配置 ,在dubbo2.7.18 前调用方不带 tag 是可以调用注册带 tag的服务的,2.7.18 修复了还有就是2.7.18的泛化调用过滤器GenericFilter做了修改,如果重写了过滤器可以官方的修改。

问题复现:

条件1:dubbo使用版本 大于等于2.7.18

条件2:dubbo服务提供者xml配置tag属性

     例:<dubbo:provider tag="test" />

条件3:dubbo客户端不进行 tag设置

问题解决办法:

方案一:服务提供者去除tag设置

方案二:服务消费者添加tag配置,并保持与服务提供者一样 

dubbo tag作用说明:

在Dubbo中,可以使用dubbo.provider.tag属性来配置提供者的标签。这个标签可以用于消费者过滤目标提供者。

要配置dubbo.provider.tag,可以在服务提供者的XML配置文件(例如provider.xml)中添加一个dubbo:provider元素,并在其中设置tag属性的值。以下是一个示例:

<dubbo:provider tag="test" />

在上面的示例中,标签被设置为"test"。你可以根据需要将其设置为任何你想要的值。

配置了dubbo.provider.tag后,消费者可以使用该标签来筛选可用的提供者。在消费者的XML配置文件(例如consumer.xml)中,可以使用dubbo:reference元素的filter属性来指定消费者过滤提供者的规则。以下是一个示例:

<dubbo:reference interface="com.example.SomeService" filter="tag=test" />

在上面的示例中,我们使用了filter属性并设置为tag=test,以筛选具有"test"标签的提供者。

通过这样的配置,你可以使用dubbo.provider.tag属性在Dubbo中配置提供者的标签,并使用消费者的过滤规则来选择特定标签的提供者。这对于在多个相同类型的提供者中进行选择是很有用的。

 


http://www.ppmy.cn/news/630242.html

相关文章

http和https区别

https和http主要区别如下&#xff1a; 1.安全性不同 http是一个简单的请求-响应协议&#xff0c;特点是无状态和明文传输。如果网站采用http协议&#xff0c;因为该协议不加密&#xff0c;极容易遭遇中间人攻击&#xff0c;用户的个人隐私和一些敏感数据很容易泄露。https&am…

ajax点评wnv冠军,中国电竞20年盘点——CS战队wNv惊险获得世界冠军

2005年1月30日&#xff0c;WEG在韩国汉城正式拉开帷幕。WEG&#xff0c;全称World E-sports Games&#xff0c;是继WCG之后又一项由韩国电竞界重金打造的国际顶级电竞赛事。在国际上被誉为继WCG、ESWC、CPL之后的第四大电子竞技赛事。 2005年的wNv势头正猛&#xff0c;状态正佳…

cf1月超级翻盘_攻略中心:坚持不懈,比赛史上那些惊天翻盘-穿越火线官方网站-腾讯游戏...

穿越火线在中国属于最争气的电竞项目&#xff0c;当然有着这么多年的比赛史&#xff0c;穿越火线出现过很多次的黑马强势逆袭或者强队翻车(S9AG不敌AE)&#xff0c;当然这并不是最好看的&#xff0c;最好的莫过于强势的将落后很大的比分追平然后加时的比赛&#xff0c;今天那我…

windows:开机不自动启动iis的设置方法

参考&#xff1a; windows10开机不自动启动iis的设置方法_忘尘~的博客-CSDN博客

链表刷题(9-11)

目录 相交链表 环形链表 环形链表Ⅱ 相交链表 力扣 第一种思路&#xff1a;判断尾节点地址是否相同&#xff0c;时间复杂度为O(N^2)。 第二种思路&#xff1a;(节点对齐)记录两个链表节点个数&#xff0c;再根据节点差设置两个快慢指针进行next节点比对。时间复杂度O(N)(3N)…

商用车防冻液市场现状及未来发展趋势

商用车防冻液定义 商用车防冻液是一种专门为商用车辆设计的防冻液&#xff0c;旨在保护发动机和冷却系统。它是一种化学物质&#xff0c;通常是由乙二醇和水混合而成&#xff0c;以防止发动机在低温下结冰或在高温下过热。 商用车防冻液的主要作用是防止冷却系统中的水在低温下…

如何用rust实现一个异步channel

目录 前言思路实现功能代码实现 测试先引测试版包测试代码结果与分析思考 尾语 前言 使用通信来共享内存&#xff0c;而不是通过共享内存来通信 上面这句话&#xff0c;是每个go开发者在 处理多线程通信时 的座右铭&#xff0c;go甚至把实现这个理念的channel直接焊在编译器里&…

炫技亮点 Spring Websocket idle check原理

文章目录 原理配置附件Java_websocket空闲检测原理 Spring Websocket 是基于 WebSocket 协议的实现&#xff0c;它提供了一种在客户端和服务器之间实时双向通信的方式。其中&#xff0c;idle check&#xff08;空闲检查&#xff09;是一种机制&#xff0c;用于检测 WebSocket 连…