Устранение ошибки SSLHandshakeException: удаленный хост завершил рукопожатие с помощью org.glassfish.jersey.client

#java #rest #ssl #jersey #jersey-client

#java #rest #ssl #джерси #джерси-клиент

Вопрос:

Я использую Jersey-client-2.27, через который вызывается вызов https get, как показано ниже:

 Client client = ClientBuilder.newClient();

return client.target(url)
        .request(MediaType.APPLICATION_JSON)
        .header("authorization", token)
        .get(String.class);
  

Получение исключения ниже один раз при каждых 10-15 обращениях к методу клиента get():

 "status":500,
"reason":"Internal Server Error",
"code":0,
"message":

javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
    at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:284)
    at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:278)
    at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$1(JerseyInvocation.java:767)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:229)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:414)
    at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:765)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:428)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:324)
  

Что может быть причиной частого сбоя вызова API, особенно во время нагрузочного тестирования, и как я могу это устранить? Я уже пробовал игнорировать SSL-сертификат и добавлять сертификат x509 при отправке запроса

Комментарии:

1. Не похоже, что ваш клиент делает что-то не так. Вам нужно будет просмотреть журналы на сервере, чтобы выяснить, почему он прерывает соединение.

2. Я не видел никаких ошибок в журналах сервера. Похоже, что сам клиент потерпел неудачу при общении.