Trae-Young opened a new issue, #2728: URL: https://github.com/apache/dubbo-go/issues/2728
### Environment <!-- - Server: Java-server, dubbo version v3.0.14 - Client: Dubbo-go, v3.1.1 - Protocol: Dubbo - Registry: Nacos, v2.1.2 --> ### Issue description 我参考https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/develop/interflow/call_java/来学习java-server和go-client互通。 -------- java侧:org/xxx/dao/entity/DataSource.java部分代码如下: package org.xxx.dao.entity; ... import java.io.Serializable; import java.util.Date; public class DataSource implements Serializable { private int id; private int userId; private String userName; private String name; private String note; private DbType type; private String connectionParams; private Date createTime; private Date updateTime; private String fromType; public DataSource() { } } ----------- org.xxx.api.service.DataSourceService.java部分代码如下: package org.xxx.api.service; ... import org.xxx.dao.entity.DataSource; ... import java.net.UnknownHostException; import java.util.List; import java.util.Map; public interface DataSourceService { ... Map<String, Object> queryDataSource(int id); ... } ---------------------- 代码中也有DataSourceService的实现类DataSourceServiceImpl.java,代码不做赘述 dubbo-provider.xml的配置如下: <dubbo:application name="${dubbo.applicationName}" > </dubbo:application> <dubbo:config-center address="${dubbo.nacos.registryAddress}" namespace="${dubbo.nacos.namespace}"/> <dubbo:metadata-report address="${dubbo.nacos.registryAddress}"> <dubbo:parameter key="namespace" value="${dubbo.nacos.namespace}"/> </dubbo:metadata-report> <dubbo:registry id="nacos" address="${dubbo.nacos.registryAddress}" username="${dubbo.nacos.username}" password="${dubbo.nacos.password}"> <dubbo:parameter key="namespace" value="${dubbo.nacos.namespace}"/> </dubbo:registry> <dubbo:protocol id="dubbo" name="dubbo" host="10.1.5.175" port="20010"/> <dubbo:service ref="dataSourceService" delay="5000" interface="org.xxx.api.service.DataSourceService" timeout="3000" registry="nacos" protocol="dubbo"/> <bean id="dataSourceService" class="org.xxx.api.service.impl.DataSourceServiceImpl"/> ------------ Dubbo-Go端: model/models.go package model import ( "context" "fmt" "time" ) type DataSource struct { Id int `hessian:"id"` UserId int `hessian:"userId"` UserName string `hessian:"userName"` Name string `hessian:"name"` Note string `hessian:"note"` Type string `hessian:"type"` // Mapped from Java enum ConnectionParams string `hessian:"connectionParams"` CreateTime time.Time `hessian:"createTime"` UpdateTime time.Time `hessian:"updateTime"` FromType string `hessian:"fromType"` } // JavaClassName returns the fully qualified class name of the Java class. func (d *DataSource) JavaClassName() string { return "org.xxx.dao.entity.DataSource" } func (d DataSource) String() string { return fmt.Sprintf("DataSource{ID: %d, UserID: %d, UserName: %s, Name: %s, Note: %s, Type: %s, ConnectionParams: %s, CreateTime: %v, UpdateTime: %v, FromType: %s}", d.Id, d.UserId, d.UserName, d.Name, d.Note, d.Type, d.ConnectionParams, d.CreateTime, d.UpdateTime, d.FromType) } // DataSourceService is the interface for the DataSource service type DataSourceService struct { QueryDataSource func(ctx context.Context, id int) (*DataSource, error) `dubbo:"queryDataSource"` } main.go代码如下: package main import ( "Dubbo-Go/model" "context" "dubbo.apache.org/dubbo-go/v3/config" _ "dubbo.apache.org/dubbo-go/v3/imports" // 导入dubbo-go需要的所有默认包 hessian "github.com/apache/dubbo-go-hessian2" "github.com/dubbogo/gost/log/logger" ) var ( dataSourceService = &model.DataSourceService{} ) func main() { hessian.RegisterPOJO(&model.DataSource{}) config.SetConsumerService(dataSourceService) err := config.Load() if err != nil { panic(err) } logger.Infof("\n\ntest") test() } func test() { logger.Infof("开始测试调用 queryDataSource 方法") id := 1 logger.Infof("即将调用 queryDataSource, ID: %d", id) dataSources1, err := dataSourceService.QueryDataSource(context.TODO(), id) if err != nil { logger.Errorf("调用 queryDataSource 失败: %v", err) } logger.Infof("response result: %v", dataSources1) } dubbogo.yml文件如下: dubbo: registries: nacos: protocol: nacos timeout: 60s address: nacos://10.1.5.230:8848 namespace: dubbogo username: nacos password: nacos protocols: "dubbo": name: "dubbo" port: 20010 address: 10.1.5.175 consumer: references: DataSourceService: protocol: dubbo interface: org.xxx.api.service.DataSourceService retries: 6 timeout: 6000 logger: zap-config: level: info <!-- Here is a brief description about the issue. --> ### Logs 在执行go run main.go之后,Go端报错如下: 2024-08-22T16:49:56.275+0800 INFO Dubbo-Go/main.go:34 开始测试调用 queryDataSource 方法 2024-08-22T16:49:56.275+0800 INFO Dubbo-Go/main.go:39 即将调用 queryDataSource, ID: 1 2024-08-22T16:49:56.276+0800 INFO impl/codec.go:169 response with exception: {SerialID:2 Type:36 ID:4 BodyLen:1085 ResponseStatus:40} 2024-08-22T16:49:56.277+0800 INFO impl/codec.go:169 response with exception: {SerialID:2 Type:36 ID:6 BodyLen:1085 ResponseStatus:40} 2024-08-22T16:49:56.278+0800 WARN proxy/proxy.go:212 [CallProxy] received rpc err: Failed to invoke the method queryDataSource in the service org.xxx.api.service.DataSourceService. Tried 1 times of the providers [dubbo://:@10.1.5.175:20010/?interface=org.xxx.api.service.DataSourceService&group=&version= dubbo://:@10.1.5.175:20010/?interface=org.xxx.api.service.DataSourceService&group=&version=] (2/1)from the registry service-discovery-registry://nacos:[email protected]:8848?registry=nacos®istry.group=®istry.label=true®istry.namespace =dubbogo®istry.preferred=false®istry.role=0®istry.timeout=60s®istry.ttl=15m®istry.weight=0®istry.zone=&remote-client-name=dubbo.registries-nacos-10.1.5.230%3A8848&simplified=false on the consumer 192.168.146.1 using the dubbo version 3.0.4. Last error is java exception:Fail to decode request due to: java.lang.IllegalArgumentException: Service not found:org.xxx.api.service.DataSourceService, queryDataSource java.lang.IllegalArgumentException: Service not found:org.xxx.api.service.DataSourceService, queryDataSource at org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:204) at org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:92) at org.apache.dubbo.remoting.transport.DecodeHandler.decode(DecodeHandler.java:60) at org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:44) at org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:59) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.dubbo.common.threadlocal.InternalRunnable.run(InternalRunnable.java:41) at java.lang.Thread.run(Thread.java:750) .: java exception:Fail to decode request due to: java.lang.IllegalArgumentException: Service not found:org.xxx.api.service.DataSourceService, queryDataSource java.lang.IllegalArgumentException: Service not found:org.xxx.api.service.DataSourceService, queryDataSource at org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:204) at org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:92) at org.apache.dubbo.remoting.transport.DecodeHandler.decode(DecodeHandler.java:60) at org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:44) at org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:59) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.dubbo.common.threadlocal.InternalRunnable.run(InternalRunnable.java:41) at java.lang.Thread.run(Thread.java:750) 2024-08-22T16:49:56.278+0800 ERROR Dubbo-Go/main.go:42 调用 queryDataSource 失败: java exception:Fail to decode request due to: java.lang.IllegalArgumentException: Service not found:org.xxx.api.service.DataSourceService, queryDataSource java.lang.IllegalArgumentException: Service not found:org.xxx.api.service.DataSourceService, queryDataSource at org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:204) at org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:92) at org.apache.dubbo.remoting.transport.DecodeHandler.decode(DecodeHandler.java:60) at org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:44) at org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:59) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.dubbo.common.threadlocal.InternalRunnable.run(InternalRunnable.java:41) at java.lang.Thread.run(Thread.java:750) main.test E:/GoCode/Dubbo-Go/main.go:42 main.main E:/GoCode/Dubbo-Go/main.go:29 runtime.main D:/GO/src/runtime/proc.go:250 2024-08-22T16:49:56.279+0800 INFO Dubbo-Go/main.go:44 response result: DataSource{ID: 0, UserID: 0, UserName: , Name: , Note: , Type: , ConnectionParams: , CreateTime: 0001-01-01 00:00:00 +0000 UTC, UpdateTime: 0001-01-01 00:00:00 +0000 UTC, FromType: } 我的java端日志如下: [WARN] 2024-08-22 16:49:56.281 +0800 org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation:[95] - [DUBBO] Decode rpc invocation failed: Service not found:org.xxx.api.service.DataSourceService, queryDataSource, dubbo version: 3.0.14, current host: 10.1.5.175 java.lang.IllegalArgumentException: Service not found:org.xxx.api.service.DataSourceService, queryDataSource at org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:204) at org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:92) at org.apache.dubbo.remoting.transport.DecodeHandler.decode(DecodeHandler.java:60) at org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:44) at org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:59) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.dubbo.common.threadlocal.InternalRunnable.run(InternalRunnable.java:41) at java.lang.Thread.run(Thread.java:750) [INFO] 2024-08-22 16:49:56.293 +0800 org.apache.dubbo.remoting.transport.netty4.NettyServerHandler:[90] - [DUBBO] The connection of /10.1.5.175:59577 -> /10.1.5.175:20010 is disconnected., dubbo version: 3.0.14, current host: 10.1.5.175 [INFO] 2024-08-22 16:49:56.293 +0800 org.apache.dubbo.remoting.transport.netty4.NettyServerHandler:[90] - [DUBBO] The connection of /10.1.5.175:59579 -> /10.1.5.175:20010 is disconnected., dubbo version: 3.0.14, current host: 10.1.5.175 [WARN] 2024-08-22 16:49:56.293 +0800 org.apache.dubbo.remoting.transport.AbstractServer:[182] - [DUBBO] All clients has disconnected from /10.1.5.175:20010. You can graceful shutdown now., dubbo version: 3.0.14, current host: 10.1.5.175 [INFO] 2024-08-22 16:49:56.293 +0800 org.apache.dubbo.remoting.transport.netty4.NettyServerHandler:[90] - [DUBBO] The connection of /10.1.5.175:59578 -> /10.1.5.175:20010 is disconnected., dubbo version: 3.0.14, current host: 10.1.5.175 具体情况如上:这个报错查阅相关资料后,能力有限,依旧是无法解决java.lang.IllegalArgumentException: Service not found:org.xxx.api.service.DataSourceService, queryDataSource -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
