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 SDK (apache/dubbo)

Dubbo Version

Dubbo Java 3.3.1 JDK 17 Nacos 2.5.1

Steps to reproduce this issue

Application-level service discovery fails when IDL package and java_package differ

org.apache.dubbo.rpc.RpcException: No provider available from registry RegistryDirectory(registry: 127.0.0.1:8848)-Directory(invokers: 0[], validInvokers: 0[], invokersToReconnect: 0[]) for service org.apache.dubbo.springboot.demo.idl.Greeter on consumer 10.94.201.88 use dubbo version 3.3.1, please check status of providers(disabled, not registered or in blocklist). at org.apache.dubbo.registry.integration.DynamicDirectory.doList(DynamicDirectory.java:204) ~[dubbo-3.3.1.jar:3.3.1] at org.apache.dubbo.rpc.cluster.directory.AbstractDirectory.list(AbstractDirectory.java:232) ~[dubbo-3.3.1.jar:3.3.1] at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.list(AbstractClusterInvoker.java:452) ~[dubbo-3.3.1.jar:3.3.1] at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:355) ~[dubbo-3.3.1.jar:3.3.1] at org.apache.dubbo.rpc.cluster.router.RouterSnapshotFilter.invoke(RouterSnapshotFilter.java:46) ~[dubbo-3.3.1.jar:3.3.1] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.3.1.jar:3.3.1] at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:109) ~[dubbo-3.3.1.jar:3.3.1] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.3.1.jar:3.3.1]

What you expected to happen

The consumer should successfully discover and connect to the service provider, as the java_package option is intended to control the Java package for generated code, and Dubbo's service discovery should correctly use SERVICE_NAME instead of JAVA_SERVICE_NAME

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: heliang666s

Thanks for the feedback!@lqscript

When the IDL package and the java_package are different, the service name actually used by the provider and the consumer is inconsistent, leading to service discovery failure.

In short, the problem is that the service is registered with one name, while service discovery uses another name. I will fix this.

Comment From: lqscript

In short, the problem is that the service is registered with one name, while service discovery uses another name. I will fix this.

Thank you for confirming the fix!

Could you please provide an estimated timeline for when this fix might be available? Specifically, is it targeted for the upcoming 3.3.5 release? If so, do you have an approximate release date for version 3.3.5?

Thanks for your help!

Comment From: wcy666103

Can you provide a sample to github link, I did not succeed to reproduce the problem you said. @lqscript

Comment From: lqscript

Steps to reproduce this issue

Application-level service discovery fails when IDL package and java_package differ

@wcy666103

Comment From: LenoMinkus

Title: Generated protobuf sources not picked up by Maven build
Body (English):

Summary
When using the current dubbo-maven-plugin to compile .proto files, the generated Java sources are placed under
target/generated-sources/protobuf/java, but Maven only scans the standard src/main/java directory during package.
As a result, the generated classes are not included in the final JAR unless an extra step is taken.

Suggestion
1. Extract .proto files into a dedicated Maven module.
2. Let the dubbo-maven-plugin generate sources in that module.
3. Consume the generated stubs from other modules via a normal Maven dependency.

Fix
Add the following dependency and plugin so Maven automatically adds the generated folder to the compile classpath:

```xml org.apache.dubbo dubbo-rpc-triple ${dubbo.version} com.google.protobuf protobuf-java ${protobuf.version}

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-maven-plugin</artifactId>
            <version>${dubbo.version}</version> <!-- 3.3.0及以上版本 -->
            <configuration>
                <!-- 参考下文可配置参数 -->
                <outputDir>${project.build.directory}/generated-sources/protobuf/java</outputDir>
                <protoSourceDir>${basedir}/src/main/proto</protoSourceDir>
                <!--proto编译器组件-->
                <!--protobuf-java的版本-->
                <protocVersion>${protobuf.version}</protocVersion>
                <!--代码生成类型  可填tri或者tri_reactor 服务定义-->
                <dubboGenerateType>tri</dubboGenerateType>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
            <!-- 添加os-maven-plugin用于自动检测系统类型 -->
            <dependencies>
                <dependency>
                    <groupId>kr.motd.maven</groupId>
                    <artifactId>os-maven-plugin</artifactId>
                    <version>1.7.0</version>
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.5.0</version>
            <executions>
                <execution>
                    <id>add-source</id>
                    <phase>generate-sources</phase>
                    <goals><goal>add-source</goal></goals>
                    <configuration>
                        <sources>
                            <!-- 与 dubbo-maven-plugin 的 outputDir 保持一致 -->
                            <source>${project.build.directory}/generated-sources/protobuf/java</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>

</build>

Environment
- Dubbo version: 3.3.0
- Maven: 3.9.x
- JDK: 17 some photos