Como especificar o parâmetro de tempo limite da solicitação HTTP no contêiner Java Servlet
-
06-07-2019 - |
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)
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.