Pergunta

Estou tentando entender onde posso configurar um tempo limite de solicitação para todas as solicitações que chegam a um servlet meu (ou todos os meus servlets)? É, como eu penso, uma propriedade de contêiner? Além disso, como isso afeta diferentes navegadores? Todos eles cumprem o parâmetro que o contêiner dita? Ou talvez o tempo de tempo limite da solicitação não seja algo que eu possa controlar e cada navegador decida por conta própria? (Só para esclarecer, não estou falando sobre o tempo limite da sessão)

Foi útil?

Solução

O tempo limite de um cliente (ou seja, quanto tempo aguarda uma resposta a uma solicitação HTTP) é determinada no cliente. Para IE, veja isto, e para o Firefox ver isto.

Você não pode controlar esse tempo limite do servidor.

Outras dicas

Mesmo que você não possa controlar o tempo limite do cliente, você pode tornar o servidor muito impaciente :) por exemplo, no tomcat, você pode fazer isso no seu conector,

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

Isso faz com que o servidor aguarde apenas 5 segundos e feche a conexão. O navegador receberá um erro fechado de conexão. Você pode tratá -lo da mesma forma que o tempo limite no cliente.

Obviamente, isso só funciona se o tempo limite for causado pelo servidor, não por problemas de conectividade entre o navegador e o servidor.

Você não pode controlar o tempo limite do cliente do servidor. No entanto, você poderá enviar dados de volta ao cliente de vez em quando, enquanto sua operação longa está ocupada. Isso impedirá que o cliente seja divulgado e pode ser usado para exibir o progresso para o usuário etc. Escreva dados no outputStream ou escritor obtido da resposta e ligue para o Flush para enviar dados parciais para o cliente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top