SocketTimeoutException

SocketTimeoutException

我在生产环境中遇到了HttpMessageNotReadableExceptionSocketTimeOutException,其根本原因是我无法弄清楚,也无法复制。由于它是在生产中发生的,因此我想解决此问题,以便客户不再遇到问题。希望社区能够提供帮助。

例外

org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: (was java.net.SocketTimeoutException); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.net.SocketTimeoutException) (through reference chain: com.org.example.api.request.SignatureRequest["users"]->java.util.ArrayList[0])
caused by com.fasterxml.jackson.databind.JsonMappingException: (was java.net.SocketTimeoutException) (through reference chain: com.org.example.api.request.SignatureRequest["users"]->java.util.ArrayList[0]) caused by java.net.SocketTimeoutException


我已经尝试过邮递员点击API可能产生的错误请求。我能够生成HttpMessageNotReadableException,但不能生成SocketTimeOutException。我们正在使用Spring Boot 2.0.4

我想弄清楚为什么会发生这种情况,以及将来如何阻止这种情况发生?

最佳答案

对于HttpMessageNotReadableException

如果您可以通过错误的请求重现该问题,则可以通过应用验证或使用try-catch来处理它们。

对于SocketTimeOutException

防止SocketTimeoutException,一种有效处理套接字超时的方法是定义一个连接超时,然后再通过使用try-catch块来处理它。

例:

HttpUrlConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(7000); //set the timeout in milliseconds

07-25 23:48