Клиент JAX-WS по умолчанию JRE висит навсегда - PullRequest
0 голосов
/ 15 сентября 2018

У меня странная ситуация, когда я являюсь клиентом веб-службы, выполняющей службу (оба основаны на java) и зависает навсегда. Я установил значения времени ожидания, как описано здесь: Как установить время ожидания для клиента веб-сервиса JAX-WS? и это решение работает, однако в данном конкретном случае оно все еще не истекло. У меня установлены таймауты на 10 секунд и 30 секунд на запрос.

Я подозреваю, что основная причина заключается в том, что какое-то сетевое устройство периодически блокирует пакеты после установления сеанса TCP и TLS, и я думаю, что что-то происходит в мыльном стеке, что недостаточно умно, чтобы отключить время ожидания и отключить связь. Я использую JRE 1.8.X (довольно близко к новейшей версии) с реализацией Sun по умолчанию.

Мне удалось воспроизвести проблему, создав простой сервер сокетов tcp с Java, который читает запрос, но никогда не записывает ответ обратно клиенту и просто охлаждает.

Я создал временную работу, используя сторожевой поток для прерывания потока, выполняющего запрос, но это, похоже, не завершает запрос. В конце концов, клиент потерпит неудачу, если JVM не будет завершена и перезапущена.

Кто-нибудь видел что-то похожее на это и имеет обходной путь или исправление? Возможно, какое-то скрытое системное свойство, которое я могу установить для настройки параметров конфигурации сокета нижнего уровня? К сожалению, переключиться на CXF на самом деле не вариант.

...