Я запускаю POST-запрос к конечной точке. Я использую Spring restTemplate.
Очень редко (1 из 100) я получаю SocketException, но хочу этого избежать.
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
HttpEntity<String> entity;
entity = new HttpEntity<>(inputPayload[0], headers);
final RestTemplate restTemplate = new RestTemplate();
return retryTemplate.execute(new RetryCallback<String, Exception>
() {
@Override
public String doWithRetry(RetryContext context) throws
Exception {
return restTemplate.exchange(url, httpMethod, entity,
String.class).getBody();
}
});
Трассировка стека исключений:
Caused by: org.springframework.web.client.ResourceAccessException:
I/O error on POST request for "": Connection reset; nested
exception is java.net.SocketException: Connection reset
at
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
at sun.security.ssl.InputRecord.read(InputRecord.java:503)
Похоже, что это на моей (клиентской) стороне, я все еще читаю из SocketInputStream после закрытия соединения? Как я могу это исправить полностью?