Tsukikage7 opened a new issue, #3162: URL: https://github.com/apache/dubbo-go/issues/3162
### 讨论详情 ### 问题描述 使用 Triple 协议进行 Go 和 Java 服务跨语言调用时,由于两种语言的命名规范不同,会导致方法查找失败: - **Go 规范**:公开方法必须首字母大写(如 `GetUser`、`SayHello`) - **Java 规范**:方法通常首字母小写(如 `getUser`、`sayHello`) 这会导致以下场景出现"方法未找到"错误: 1. Go 客户端使用 Go 风格方法名调用 Java 服务 2. Java 客户端使用 Java 风格方法名调用 Go 服务 ### 期望行为 方法查找应该对首字母大小写不敏感,使 Go 和 Java 服务能够无缝互通,无需更改命名规范。 ### 复现步骤 1. 创建一个 Go 服务,包含方法 `GetUser(ctx context.Context, req *Request) (*Response, error)` 2. 创建一个 Java 客户端,通过 Triple 协议泛化调用 `getUser` 3. 调用失败,因为 Java 查找 `getUser`,但 Go 注册的是 `GetUser` ### 补充信息 **当前的临时方案(dubbo-go 侧)** 在 [PR #3154](https://github.com/apache/dubbo-go/pull/3154) 中,我们在 dubbo-go 侧实现了一个 workaround,同时注册大写和小写两种版本的方法名: ```go // server/server.go - enhanceServiceInfo 函数 // 同时注册 "GetUser" 和 "getUser" ``` 这个方案可以工作,但不够优雅。更好的解决方案应该在 dubbo-java 侧支持方法名大小写不敏感查找。 **建议的解决方案** 在 Triple 协议的方法查找逻辑中,增加对方法名首字母大小写不敏感的匹配支持。 ### 环境信息 - Dubbo 版本: 3.x - 操作系统: 全部 - JDK 版本: 全部 ### 📚 相关背景 _No response_ -- 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]
