当客户端将图像发送到其余端点之一时,仅接收到部分数据。
为了确定发生了什么,我使用Wireshark进行了跟踪并进行了分析。该应用程序确实没有收到消息的最后部分。这是因为应用程序无法在客户端指定的900ms超时内接收所有数据。接收过程中,缓冲区已满。
我收到应用警告 org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver [http-nio-0.0.0.0-9999-exec-35]无法读取HTTP消息: org.springframework.http.converter.HttpMessageNotReadableException: 读取输入消息时发生I / O错误;嵌套异常为 java.io.EOFException:在套接字上读取了意外的EOF
客户端将获得连接超时。
答案 0 :(得分:0)
我已经解决了我的问题。我在应用程序中增加了套接字缓冲区的大小。我已经在我的Application类中添加了以下代码。
@Bean 公共EmbeddedServletContainerFactory EmbeddedServletContainerFactory(){ TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory = new TomcatEmbeddedServletContainerFactory(); tomcatEmbeddedServletContainerFactory.setProtocol(“ org.apache.coyote.http11.Http11Nio2Protocol”); tomcatEmbeddedServletContainerFactory.addConnectorCustomizers((TomcatConnectorCustomizer)连接器-> { connector.setProperty(“ socket.rxBufSize”,“ 5000000”); }); 返回tomcatEmbeddedServletContainerFactory; }