报错记录
2020-08-19 14:35:11.505 ERROR 18124 --- [ XNIO-1 task-20] c.l.comm.core.GlobalExceptionHandler : RuntimeException:
org.springframework.http.converter.HttpMessageNotReadableException: I/O error while reading input message; nested exception is java.io.IOException: UT000128: Remote peer closed connection before all data could be read
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:217) ~[spring-webmvc-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158) ~[spring-webmvc-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131) ~[spring-webmvc-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:127) ~[spring-web-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:167) ~[spring-web-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134) ~[spring-web-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893) ~[spring-webmvc-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798) ~[spring-webmvc-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.1.10.RELEASE.jar:5.1.10.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) [spring-webmvc-5.1.10.RELEASE.jar:5.1.10.RELEASE]
java跨服务报错,检查了FeignClient注解和yml配置以及代码都没有问题。
检查了一天半
网上资料很少 大概都是说传递参数有问题 或者 配置有问题 无法建立长连接导致程序运行过程中连接关闭
参考stackoverflow相似问题解答
This is a problem at the client. It sent a content-length but didn't send that much data, and closed the connection instead of waiting to receive the response
这是客户端的问题。 它发送了一个内容长度,但没有发送那么多数据,并且关闭了连接而不是等待接收响应。
初步推断:跨服务时发送的参数数据有问题
重新写了个测试方法不传参跨服务调用方法,没有任何问题
最后发现是传参的时候出现了问题
推测 使用封装类型CompositeData传递数据时,body没有赋值(null)
传递参数长度有问题 服务器自动关闭
具体原因不明,等我后续想明白了再来完善
解决方法: 通过setFieldVaule方法向参数cd的body中加入一些数据
String a = "aaa";
MessageUtil.setFieldVaule(cd, "Result1", a);
//执行业务方法
cd = remoteUserService.getUserList1(cd);
// String b = (String) remoteUserService.getTest(a).getBody().get("test");
return cd;
加入数据后则程序正常运行,跨服务成功接收接口数据。
欢迎交流讨论,希望有思路可以在文章下方留言,帮助更多的网友
转载请注明出处:https://www.jianshu.com/p/0babd7238593
网友评论