Проблема тайм-аута JAX-WS - PullRequest
       12

Проблема тайм-аута JAX-WS

3 голосов
/ 07 февраля 2010

Я опубликовал конечную точку веб-службы на облегченном http-сервере Sun.Сервер работает с исполнителями ThreadPool для подключения (Executors.newCachedThreadPool()).Я также использую обычный клиент веб-службы (также JAX-WS).

Кажется, что для каждого вызова, превышающего 5 минут, сервер (или клиент) завершает текущий поток вызовов и открывает новый.На сервере это выглядит так, как будто новое соединение установлено и пытается выполнить то же действие.

Это происходит только один раз, что означает, что «второй вызов» может превышать 5 минут.

тайм-аут по умолчанию для соединения?Есть ли способ его настроить?

Ответы [ 3 ]

5 голосов
/ 07 февраля 2010

При использовании облегченного http-сервера соединение станет бездействующим через 5 минут. Реализация (взгляните на ServerImpl и ServerConfig) закрывает незанятые соединения, и в настоящее время нет открытого свойства для установки этого времени ожидания. Если вам нужен такой контроль, вы можете использовать контейнер сервлетов. Или вы можете использовать Jetty (который предоставляет SPI) вместо Sun по умолчанию HttpServer .

1 голос
/ 07 февраля 2010

Обычно я ожидаю, что это будет проблема на стороне клиента (однако, проверьте ответ Паскаля). У клиентов будет определенное значение тайм-аута, и они будут спасаться при слишком длительной операции.

например. в HttpClient вы можете определить время ожидания подключения и время ожидания чтения отдельно (см. руководство по конфигурации ).

Если метод действительно занимает 5 минут или более, я бы посмотрел, как разбить эту операцию на более отдельные операции, каждая из которых занимает более короткий период времени. Или выполните обработку в фоновом режиме и дайте клиенту билет, чтобы он мог получить результаты позже, не поддерживая соединение.

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

0 голосов
/ 08 февраля 2010

На самом деле я смог найти взлом, используя информацию, предоставленную Паскалем (Спасибо!). Вы можете переопределить время простоя сервера http, установив системное свойство -sun.net.httpserver.idleInterval.

...