слишком много открытых файлов при использовании клиента JAX-WS - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть приложение, которое связывается с удаленным веб-сервером с помощью клиента на основе 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);

Когда приложению приходится отправлять больше запросов на веб-сервер, происходит сбой приложения с ошибкой «слишком много открытых файлов».Я не нахожу никакого решения.

Пожалуйста, помогите мне решить проблему.

Заранее спасибо.

Чандан Талукдар, Бангалор, Индия

1 Ответ

0 голосов
/ 04 апреля 2012

Проблема была решена с помощью последней версии JAX-WS.Библиотеки JAX-WS, поставляемые с java, неправильно закрывают сокеты.перейдите по ссылке ниже

Повторное использование HTTP-соединения в JAX-WS

...