[总结]dubbo telnet 调用服务报No such method 解决方法


dubbo>invoke com.oyo.api.service.RouteService.circleRoute({"lng":120.218954,"size":30,"radius":1000,"routeType":1,"lat":30.208402,"addrType":1})

No such method circleRoute in service com.oyo.api.service.RouteMeshService.circleRoute
dubbo>ls com.oyo.api.service.RouteService
circleRoute
dubbo>
dubbo>invoke com.oyo.api.service.RouteService.circleRoute({"class":"com.oyo.api.param.RouteParam","lng":120.218954,"size":30,"radius":1000,"routeType":1,"lat":30.208402,"addrType":1})

结果成功查询到。

问题描述

新开发了一个dubbo 服务,发到测试环境,想要手动调一下。想到了用telnet来调。telnet 10.0.10.50 2891

正当所有一切准备就绪时,执行

invoke com.oyo.api.service.RouteService.circleRoute({"lng":120.218954,"size":30,"radius":1000,"routeType":1,"lat":30.208402,"addrType":1})

居然报错:No such method circleRoute in service com.oyo.api.service.RouteMeshService.circleRoute

于是网上找了一下,很快找到解决方法:https://yq.aliyun.com/articles/606812

但上述该文章描述的解决方案,不够生动形象,导致我揣摩了好一会。才唔明白“当我们传入json的时候,参数类型是jsonObject,所以我们得添加一个属性class,来指定参数类型。”

这句话的意思就是,如果我们的参数是一个对象,那就需要为该参数添加一个class属性,来直接声明该json对应的java类。

 

最后,使用下面的格式发请求,则成功返回:invoke com.oyo.api.service.RouteService.circleRoute({"class":"com.oyo.api.param.RouteParam","lng":120.218954,"size":30,"radius":1000,"routeType":1,"lat":30.208402,"addrType":1})

 

你可能感兴趣的:(dubbo)