Мы реализовали клиент JAX-WS и столкнулись со следующей проблемой. Это синхронизированный поток синхронизации сеанса. Клиент делает два запроса/ответа сначала один на один УстпешноКлиент JAX-WS закрывает соединение tcp с FIN, ACK
3 различных случаях для выдачи
1) После первого два запроса/ответа, я делаю третий запрос, который после того, как 6-й и 9-й (два разных теста) через несколько секунд после получения ответа второго запроса. В обоих случаях из tcpdump я мог видеть, что наш клиент закрывает существующее соединение tcp с помощью [FIN, ACK] и открывает новое соединение для третьего запроса. Но поскольку это сеанс с состоянием, сервер ожидает, что соединение не должно быть закрыто, и поэтому мы получаем ответ об ошибке.
2) Если я сделаю третий запрос в течение 5 секунд после второго запроса, повторное использование того же соединения tcp.
3) Если я не делаю 3-й запрос на всех, а затем automatcially через 10 секунд (по [FIN, ACK] из 2-го запроса, TCP conenction закрыт клиентом.
В основном проблема клиента приложение закрывает соединение TCP сам по себе. Я попытался, установив все следующие свойства. Но все-таки я столкнулся с той же проблемой.
BindingProvider bp = (BindingProvider)port;
Map<String, Object> context = bp.getRequestContext();
context.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
context.put(JAXWSProperties.CONNECT_TIMEOUT, 60000);
context.put(JAXWSProperties.REQUEST_TIMEOUT, 70000);
context.put("com.sun.xml.ws.connect.timeout", 50000);
context.put("com.sun.xml.ws.request.timeout", 50000);
context.put("javax.xml.ws.client.connectionTimeout", 60000);
context.put("javax.xml.ws.client.receiveTimeout", 70000);
Я attching скриншот PCAP файла для справки. Вот вам может видеть [FIN, ACK], выданный клиентом через 6 секунд.
Я не уверен, есть ли какая-либо другая конфигурация, которую мне не хватает. Не могли бы вы помочь мне решить эту проблему?
Vesrions: Java: jdk1.6.0_21
Метро: Метро/2,3
HTTP: 1,1
Еще одна вещь, которую я заметил, есть «Connection: Keep-жив «в запросе, но его нет в ответе сервера. Не уверен, что это может быть проблемой.
Hi. У меня такая же проблема, но в моем случае клиентский заглушка закрывает соединение через 15 секунд. Вы нашли решение? –
@IgorZelaya nope .. У меня не было времени, чтобы проверить, как проблема эскалации. Я дал обходное решение, отправив фиктивное сообщение, такое как ping, если нет фактического трафика более 4 или 5 секунд. Таким образом я сохранил соединение от закрытия. – vijayashankard
Вы уверены, что это сам клиент jax-ws, а не прокси-сервер или устройство между клиентом и поставщиком услуг с таймаутом бездействия, например брандмауэром? «Keepalive» или ping также могут избежать этого. Обычно это наблюдается в других сценариях с использованием состояния или повторного использования, таких как пул соединений jdbc. Что делает журнал или отчет о клиенте jax-ws? –