(name: rest, class: interface org.apache.dubbo.rpc.Protocol) couldn‘t be instantiated: null

文章描述了一个在使用Dubbo3.1.7版本时遇到的问题,具体是尝试引用DemoService接口时失败,由于rest协议扩展实例无法被实例化导致。错误的根本原因是缺少javax.ws.rs.ProcessingException类定义。解决方案是确保Dubbo和SpringCloudAlibaba的分组名称不同,避免混淆,并检查Rest协议相关依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错日志:

2023-03-16 16:23:14.063 ERROR 15300 --- [ncesChangeEvent] .d.r.c.ServiceDiscoveryRegistryDirectory : [DUBBO] Failed to refer invoker for interface:interface com.modules.service.DemoService,url:(DefaultServiceInstance{serviceName='rpc', host='172.0.4.184', port=9001, enabled=true, healthy=true, metadata={preserved.register.source=SPRING_CLOUD}}, service{name='com.modules.service.DemoService',group='null',version='null',protocol='null',port='9001',params={},})Extension instance (name: rest, class: interface org.apache.dubbo.rpc.Protocol) couldn't be instantiated: null, dubbo version: 3.1.7, current host: 172.0.4.184, error code: 4-3. This may be caused by , go to https://dubbo.apache.org/faq/4/3 to find instructions.

java.lang.IllegalStateException: Extension instance (name: rest, class: interface org.apache.dubbo.rpc.Protocol) couldn't be instantiated: null
at org.apache.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:806) ~[dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:561) ~[dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:535) ~[dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.rpc.Protocol$Adaptive.refer(Protocol$Adaptive.java) ~[dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory.toInvokers(ServiceDiscoveryRegistryDirectory.java:352) [dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory.refreshInvoker(ServiceDiscoveryRegistryDirectory.java:254) [dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory.refreshOverrideAndInvoker(ServiceDiscoveryRegistryDirectory.java:182) [dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory.notify(ServiceDiscoveryRegistryDirectory.java:176) [dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener.lambda$notifyAddressChanged$9(ServiceInstancesChangedListener.java:417) [dubbo-3.1.7.jar:3.1.7]
at java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1597) ~[na:1.8.0_331]
at org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener.notifyAddressChanged(ServiceInstancesChangedListener.java:410) [dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener.doOnEvent(ServiceInstancesChangedListener.java:217) [dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener.onEvent(ServiceInstancesChangedListener.java:113) [dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.registry.nacos.NacosServiceDiscovery.handleEvent(NacosServiceDiscovery.java:231) ~[dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.registry.nacos.NacosServiceDiscovery.access$000(NacosServiceDiscovery.java:64) ~[dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.registry.nacos.NacosServiceDiscovery$NacosEventListener.onEvent(NacosServiceDiscovery.java:202) ~[dubbo-3.1.7.jar:3.1.7]
at com.alibaba.nacos.client.naming.event.InstancesChangeNotifier.onEvent(InstancesChangeNotifier.java:126) ~[nacos-client-2.2.0.jar:na]
at com.alibaba.nacos.client.naming.event.InstancesChangeNotifier.onEvent(InstancesChangeNotifier.java:42) ~[nacos-client-2.2.0.jar:na]
at com.alibaba.nacos.common.notify.DefaultPublisher.lambda$notifySubscriber$0(DefaultPublisher.java:199) ~[nacos-client-2.2.0.jar:na]
at com.alibaba.nacos.common.notify.DefaultPublisher.notifySubscriber(DefaultPublisher.java:206) ~[nacos-client-2.2.0.jar:na]
at com.alibaba.nacos.common.notify.DefaultPublisher.receiveEvent(DefaultPublisher.java:190) ~[nacos-client-2.2.0.jar:na]
at com.alibaba.nacos.common.notify.DefaultPublisher.openEventHandler(DefaultPublisher.java:112) ~[nacos-client-2.2.0.jar:na]
at com.alibaba.nacos.common.notify.DefaultPublisher.run(DefaultPublisher.java:95) ~[nacos-client-2.2.0.jar:na]
Caused by: java.lang.reflect.InvocationTargetException: null
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_331]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_331]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_331]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_331]
at org.apache.dubbo.common.beans.support.InstantiationStrategy.instantiate(InstantiationStrategy.java:94) ~[dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.common.extension.ExtensionLoader.createExtensionInstance(ExtensionLoader.java:811) ~[dubbo-3.1.7.jar:3.1.7]
at org.apache.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:772) ~[dubbo-3.1.7.jar:3.1.7]
... 22 common frames omitted
Caused by: java.lang.NoClassDefFoundError: javax/ws/rs/ProcessingException
at org.apache.dubbo.rpc.protocol.rest.RestProtocol.(RestProtocol.java:80) ~[dubbo-3.1.7.jar:3.1.7]
... 29 common frames omitted

解决方案:

dubbo 和 Spring Cloud Alibaba 的分组要分开,不要使用同一个分组名,这样会导致错误订阅到 Spring Cloud 的应用,使用了 Rest 协议

dubbo issues地址:https://github.com/apache/dubbo/issues/11852

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值