Pre-check

  • [x] I am sure that all the content I provide is in English.

Search before asking

  • [x] I had searched in the issues and found no similar issues.

Apache Dubbo Component

Java Samples (apache/dubbo-samples)

Dubbo Version

Dubbo 3.3.4, SpringBoot 2.7.18, Corretto 1.8.0_452

Steps to reproduce this issue

Modify the samples code: ```[java] /** * stub-consumer/StubConsumer * / @DubboReference(check=false, stub="org.apache.dubbo.samples.stub.DemoServiceStub", onconnect = "print", interfaceName = "org.apache.dubbo.samples.stub.DemoService") private DemoService demoService;

```[stub-interface]
/**
 * stub-interface/DemoServiceStub
 * /

    public void print() {
        logger.info("onconnect.");
    }

then start zk, provider, consumer. and consumer print error log:

17:25:50.205 |-ERROR [main] pc.proxy.wrapper.StubProxyFactoryWrapper:    -|  [DUBBO] export a stub service error., dubbo version: 3.3.4, current host: 192.168.31.200, error code: 3-2. This may be caused by , go to https://dubbo.apache.org/faq/3/2 to find instructions. 
java.lang.IllegalStateException: No such extension org.apache.dubbo.rpc.Protocol by name consumer, no related exception was found, please check whether related SPI module is missing.
    at org.apache.dubbo.common.extension.ExtensionLoader.findException(ExtensionLoader.java:768) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:775) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:575) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:549) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.rpc.proxy.wrapper.StubProxyFactoryWrapper.export(StubProxyFactoryWrapper.java:139) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.rpc.proxy.wrapper.StubProxyFactoryWrapper.getProxy(StubProxyFactoryWrapper.java:99) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.rpc.ProxyFactory$Adaptive.getProxy(ProxyFactory$Adaptive.java) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:522) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:383) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:244) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.config.utils.SimpleReferenceCache.get(SimpleReferenceCache.java:140) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.config.deploy.DefaultModuleDeployer.lambda$referServices$6(DefaultModuleDeployer.java:567) ~[dubbo-3.3.4.jar:3.3.4]
    at java.util.concurrent.ConcurrentHashMap$ValuesView.forEach(ConcurrentHashMap.java:4705) ~[?:1.8.0_452]
    at org.apache.dubbo.config.deploy.DefaultModuleDeployer.referServices(DefaultModuleDeployer.java:539) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.config.deploy.DefaultModuleDeployer.startSync(DefaultModuleDeployer.java:186) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.config.deploy.DefaultModuleDeployer.start(DefaultModuleDeployer.java:159) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onContextRefreshedEvent(DubboDeployApplicationListener.java:167) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onApplicationEvent(DubboDeployApplicationListener.java:153) ~[dubbo-3.3.4.jar:3.3.4]
    at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onApplicationEvent(DubboDeployApplicationListener.java:52) ~[dubbo-3.3.4.jar:3.3.4]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:178) ~[spring-context-5.3.31.jar:5.3.31]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:171) ~[spring-context-5.3.31.jar:5.3.31]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:145) ~[spring-context-5.3.31.jar:5.3.31]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:429) ~[spring-context-5.3.31.jar:5.3.31]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:386) ~[spring-context-5.3.31.jar:5.3.31]
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:949) ~[spring-context-5.3.31.jar:5.3.31]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:594) ~[spring-context-5.3.31.jar:5.3.31]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[spring-boot-2.7.18.jar:2.7.18]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:409) ~[spring-boot-2.7.18.jar:2.7.18]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-2.7.18.jar:2.7.18]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) ~[spring-boot-2.7.18.jar:2.7.18]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1289) ~[spring-boot-2.7.18.jar:2.7.18]
    at org.apache.dubbo.samples.stub.consumer.StubConsumer.main(StubConsumer.java:44) ~[classes/:?]

What you expected to happen

Consumer can work normally

Anything else

No response

Are you willing to submit a pull request to fix on your own?

  • [ ] Yes I am willing to submit a pull request on my own!

Code of Conduct

Comment From: fantiq

Set protocol parameters on annotations,like this:

@DubboReference(check=false,
            protocol="dubbo",
            stub="org.apache.dubbo.samples.stub.DemoServiceStub",
            onconnect = "print",
            interfaceName = "org.apache.dubbo.samples.stub.DemoService")
    private DemoService demoService;

Comment From: kbac001

Set protocol parameters on annotations,like this:

@DubboReference(check=false, protocol="dubbo", stub="org.apache.dubbo.samples.stub.DemoServiceStub", onconnect = "print", interfaceName = "org.apache.dubbo.samples.stub.DemoService") private DemoService demoService;

Thanks a lot it worked, but why? I have defined dubbo.consumer.protocal: dubbo in application.yml but it doesn't work.

Comment From: fantiq

Set protocol parameters on annotations,like this: @DubboReference(check=false, protocol="dubbo", stub="org.apache.dubbo.samples.stub.DemoServiceStub", onconnect = "print", interfaceName = "org.apache.dubbo.samples.stub.DemoService") private DemoService demoService;

Thanks a lot it worked, but why? I have defined dubbo.consumer.protocal: dubbo in application.yml but it doesn't work.

can u please provider a complete example?