invoke:
某些dubbo版本参数对象需要在json中指定class,明确参数类型 如果没有传入,将会调用失败,相关问题可以参见这个 为什么高版本的dubbo对telnet支持不友好了呢
比如有接口com.jianhao84.service.TestService.test(Person person),Person对象有name和age属性: 情况1:dubbo2.5.3版本,传入以下json字符串就行 {"name":"QQQ","age":18} 情况2:dubbo2.x.x(其他高版本,我也没所有版本都测试,反正就这两种参数方式自己试)需要在json中指定class路径.假设Person类的完整包路径为:com.jianhao84.bean.Person,就需要传入以下json才行 {"name":"QQQ","age":18,"class":"com.jianhao84.bean.Person"}
背景:
请求调用dubbo接口
开发、测试环境正常,部署线上调用界面出现 Caution: request is not finished yet 或许是存在环境配置上的差异 问题可能不在代码 可能是网络问题
处理路线:
查阅服务器日志,注意日志所在位置(扩展:Tomcat日志文件分别存储哪些类型日志)
测试远程服务器是否可以访问:
telnet ip port
若测试通过,ls查看dubbo接口列表
invoke 执行 Dubbo 方法 (可用curl命令拼接请求数据测试前端请求接口)
invoke com.xxx.XxxService.xxxMethod({"key" : "value"})
接口invoke成功,有响应数据 (矛盾点:invoke 接口成功但是前端接口访问失败, 后续联系网络组排查 增加路由问题解决)
route add -net 10.XXX.XXX.XXX netmask 255.255.255.0 gw 192.XXX.XXX.XXX
处理结论:
- 增加路由配置
- 可迁移代码 将dubbo接口处理逻辑放在其他正常可以调用的服务器中 未测试 应该是可行的