Как указать параметр тайм-аута запроса Http в контейнере сервлета Java

StackOverflow https://stackoverflow.com/questions/1414795

Вопрос

Я пытаюсь понять, где можно настроить время ожидания для всех запросов, поступающих на мой сервлет (или на все мои сервлеты)? Это, как я думаю, свойство контейнера? Кроме того, как это влияет на разные браузеры? Все ли они соответствуют параметру, который диктует контейнер? Или, может быть, время ожидания запроса даже не то, что я могу контролировать, и каждый браузер решает это самостоятельно? (Просто чтобы прояснить, я не говорю о времени ожидания сессии)

Это было полезно?

Решение

Время ожидания от клиента (т. е. сколько времени он ожидает ответа на HTTP-запрос) определяется на клиенте. Для IE см. этот , а для Firefox см. это .

Вы не можете контролировать этот тайм-аут с сервера.

Другие советы

Даже если вы не можете контролировать время ожидания клиента, вы можете сделать сервер очень нетерпеливым :) Например, в Tomcat вы можете сделать это в своем коннекторе,

<Connector port="8080"  
  ...
  connectionTimeout ="5000"
  disableUploadTimeout="false" />

Это заставляет сервер ждать только 5 секунд и закрывать соединение. Браузер получит сообщение об ошибке закрытия соединения. Вы можете относиться к нему так же, как к таймауту в клиенте.

Конечно, это работает только в том случае, если время ожидания вызвано сервером, а не проблемами подключения между браузером и сервером.

Вы не можете контролировать время ожидания клиента с сервера. Однако вы можете отправлять данные клиенту время от времени, пока ваша длительная операция занята. Это предотвратит тайм-аут клиента и может использоваться для отображения прогресса пользователю и т. Д. Записать данные в OutputStream или Writer, полученные из ответа, и вызвать сброс для отправки частичных данных клиенту.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top