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&registry.group=&registry.label=true&registry.namespace
   
=dubbogo&registry.preferred=false&registry.role=0&registry.timeout=60s&registry.ttl=15m&registry.weight=0&registry.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]

Reply via email to