正文 |
小菜继续成长积累中,今天小菜说说我这两天费了九牛二虎之力写好的接口,在test类中进行测试有数据,前端调用此接口时怎么着都没有数据!
Why???
Because——代码没有提交,提交后Jenkins上没有构建
愁苦了一天,查了一天,才发现都是好低级的错误呀,就是因为我满心欢喜的以为自己在test类中测试自己写的接口有数据了,我就没事了,然而却不知道自己的职责是要让前端能够获取到数据,漏掉了到真正起作用的测试——swagger。下面小菜记录一下因为自己的无知而遇到的问题。
错误详情 |
2018-05-09 20:30:29,884 ERROR com.dmsdbj.itoo.teachingManagement.controller.TeacherCourseController.queryTeachercourseInfo(TeacherCourseController.java:623) http-bio-8080-exec-7 |- TeacherCourseController.queryTeachercourseInfo()方法出错
com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method queryTeachercourseInfo in the service com.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade. Tried 3 times of the providers [192.168.22.53:20889] (1/1) from the registry 192.168.22.60:2181 on the consumer 192.168.228.11 using the dubbo version 2.5.8. Last error is: Failed to invoke remote method: queryTeachercourseInfo, provider: dubbo://192.168.22.53:20889/com.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade?anyhost=true&application=teachingManagementweb&check=false&default.check=false&default.group=local&default.timeout=30000&dubbo=2.5.8&generic=false&interface=com.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade&methods=queryCourse,queryTeacher,addTeacherCourseMultiple,queryTeacherInfo,queryTeacherCourseClass,updateTeacherCourse,queryTeacherCourse,fuzzyQueryAllCourse,querySemesters,deleteTeacherCourses,addTeacherCourse,queryTeacherCourseList,fuzzyQueryTeacherCourseExport,queryUrlByName,fuzzyQueryTeacher,queryTeacherIdAndName,fuzzyQueryTeacherCourse,findIsInsertTheSame,exportTeacherCourse&pid=784®ister.ip=192.168.228.11&remote.timestamp=1525860445921&revision=1.0.5-SNAPSHOT&side=consumer×tamp=1525868651484, cause: com.alibaba.dubbo.rpc.RpcException: Failed to invoke remote proxy method queryTeachercourseInfo to registry://192.168.22.60:2181/com.alibaba.dubbo.registry.RegistryService?application=teachingManagementservice&dubbo=2.5.8&export=dubbo%3A%2F%2F192.168.22.53%3A20889%2Fcom.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade%3Fanyhost%3Dtrue%26application%3DteachingManagementservice%26bind.ip%3D192.168.22.53%26bind.port%3D20889%26default.group%3Dlocal%26default.timeout%3D30000%26dubbo%3D2.5.8%26generic%3Dfalse%26interface%3Dcom.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade%26methods%3DqueryCourse%2CqueryTeacher%2CaddTeacherCourseMultiple%2CqueryTeacherInfo%2CqueryTeacherCourseClass%2CupdateTeacherCourse%2CqueryTeacherCourse%2CfuzzyQueryAllCourse%2CquerySemesters%2CdeleteTeacherCourses%2CaddTeacherCourse%2CqueryTeacherCourseList%2CfuzzyQueryTeacherCourseExport%2CqueryUrlByName%2CfuzzyQueryTeacher%2CqueryTeacherIdAndName%2CfuzzyQueryTeacherCourse%2CfindIsInsertTheSame%2CexportTeacherCourse%26pid%3D14206%26revision%3D1.0.5-SNAPSHOT%26side%3Dprovider%26timestamp%3D1525860445921&pid=14206®ister=true®istry=zookeeper×tamp=1525860445921, cause: Not found method “queryTeachercourseInfo” in class com.dmsdbj.itoo.teachingManagement.facade.impl.TeacherCourseFacadeImpl.
com.alibaba.dubbo.rpc.RpcException: Failed to invoke remote proxy method queryTeachercourseInfo to registry://192.168.22.60:2181/com.alibaba.dubbo.registry.RegistryService?application=teachingManagementservice&dubbo=2.5.8&export=dubbo%3A%2F%2F192.168.22.53%3A20889%2Fcom.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade%3Fanyhost%3Dtrue%26application%3DteachingManagementservice%26bind.ip%3D192.168.22.53%26bind.port%3D20889%26default.group%3Dlocal%26default.timeout%3D30000%26dubbo%3D2.5.8%26generic%3Dfalse%26interface%3Dcom.dmsdbj.itoo.teachingManagement.facade.TeacherCourseFacade%26methods%3DqueryCourse%2CqueryTeacher%2CaddTeacherCourseMultiple%2CqueryTeacherInfo%2CqueryTeacherCourseClass%2CupdateTeacherCourse%2CqueryTeacherCourse%2CfuzzyQueryAllCourse%2CquerySemesters%2CdeleteTeacherCourses%2CaddTeacherCourse%2CqueryTeacherCourseList%2CfuzzyQueryTeacherCourseExport%2CqueryUrlByName%2CfuzzyQueryTeacher%2CqueryTeacherIdAndName%2CfuzzyQueryTeacherCourse%2CfindIsInsertTheSame%2CexportTeacherCourse%26pid%3D14206%26revision%3D1.0.5-SNAPSHOT%26side%3Dprovider%26timestamp%3D1525860445921&pid=14206®ister=true®istry=zookeeper×tamp=1525860445921, cause: Not found method “queryTeachercourseInfo” in class com.dmsdbj.itoo.teachingManagement.facade.impl.TeacherCourseFacadeImpl.
at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:76)
at com.alibaba.dubbo.config.invoker.DelegateProviderMetaDataInvoker.invoke(DelegateProviderMetaDataInvoker.java:36)
at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:64)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper 1.invoke(ProtocolFilterWrapper.java:69)
at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper 1.invoke(ProtocolFilterWrapper.java:69)
at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:61)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper 1.invoke(ProtocolFilterWrapper.java:69)
at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper 1.invoke(ProtocolFilterWrapper.java:69)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.alibaba.dubbo.common.bytecode.NoSuchMethodException: Not found method “queryTeachercourseInfo” in class com.dmsdbj.itoo.teachingManagement.facade.impl.TeacherCourseFacadeImpl.
at com.alibaba.dubbo.common.bytecode.Wrapper9.invokeMethod(Wrapper9.java)
at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)
at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)
… 26 more
解决过程 |
1.开始
问:看到上面的一堆错误信息头疼吗?
答:小菜自答一下刚开始真的头疼,一堆的英文,实在不想看。那咋办呢?不解决了吗?不能呗!咋办?
2.方向
小菜找了句关键句“com. alibaba. dubbo. common. bytecode. NoSuchMethodException”放百度上,发现:网上给的答案是:Dubbo的注册中心zookeeper没有启动。于是乎我有了解决问题的方向。
3.仔细看错误信息
◆queryTeachercourseInfo()方法出错
queryTeachercourseInfo()是我刚才写的接口为啥test类中都测试成功了,swagger上测试方法就出错呢?
◆Failed to invoke the method queryTeachercourseInfo in the service
无法在服务中调用queryTeachercourseInfo方法。
4.找准原因
这个时候我才明白,我的test类测试成功那是本地的,前端调接口是找到相应的服务然后找到对应的接口才能调用,我写的接口都没有在服务上构建如何调呢?当然失败啦
小结 |
小菜明白出现这些问题足以显示小菜真的很菜,不过通过今天的这些一连串问题我还是学到了很多,首先遇到一长串的error信息要耐心细心看,实在看不懂找关键句查一下,然后找到自己解决问题的方向!小菜fighting!