Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Тайм-аут от клиента (т.е. как долго он ожидает ответа на HTTP-запрос) определяется на клиенте. Для IE см. this, а для Firefox см. this.

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

Ответ 2

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

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

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

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

Ответ 3

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