У меня есть приложение, которое связывается с удаленным веб-сервером с помощью клиента на основе JAX-WS.Проблема, с которой я сталкиваюсь, заключается в том, что приложение неправильно закрывает HTTP-соединения после завершения запроса.Сокеты находятся в состоянии CLOSED_WAIT.Выход из lsof -p выглядит следующим образом со всеми сокетами в CLOSED_WAIT:
52u IPv6 6467002 TCP gsilin2.india.com:31842->gsilin2.india.com:7073 (CLOSE_WAIT) 53u IPv6 6467357 TCPgsilin2.india.com:31970->gsilin2.india.com:7073 (CLOSE_WAIT) 54u IPv6 6467480 TCP gsilin2.india.com:32015->gsilin2.india.com:7073 (CLOSE_WAIT) 55u IPv6 6467368 TCP gsilin2.india.com: 31974-> gsilin2.india.com:7073 (CLOSE_WAIT)
Из вышеприведенного сценария я понимаю, что JAX-WS внутренне не закрывает базовые соединения HTTP.Ниже приведен фрагмент кода, который использовался в приложении.
BindingProvider bindingProvider = (BindingProvider)atuaPortType;
bindingProvider.getBinding().setHandlerChain(handlerChain);
Map<String, Object> map=bindingProvider.getRequestContext();
.....
.....
map.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, serverurl);
Map map1 = new HashMap();
map1.put("Connection", Collections.singletonList("close"));
map.put(MessageContext.HTTP_REQUEST_HEADERS, map1);
Когда приложению приходится отправлять больше запросов на веб-сервер, происходит сбой приложения с ошибкой «слишком много открытых файлов».Я не нахожу никакого решения.
Пожалуйста, помогите мне решить проблему.
Заранее спасибо.
Чандан Талукдар, Бангалор, Индия