Cancelamento de um GWT chamada do lado do servidor
Pergunta
Eu estou usando RequestBuilder
para o tempo limite solicitações GWT que levam muito tempo:
RequestBuilder requestBuilder = _service.getStatistics(callback);
requestBuilder.setTimeoutMillis(5000);
try {
requestBuilder.send();
} catch (RequestException e) {
GWT.getUncaughtExceptionHandler().onUncaughtException(e);
}
Existe uma maneira de notificar o chamado serviço remoto que a chamada tem tempo limite para fora no cliente e que ele deve ser cancelado?
Solução
Não, a menos que você fazer outra chamada para dizer o serviço remoto que a chamada anterior foi cancelado!
Outras dicas
Isso realmente depende. Se o servidor está fazendo um monte de trabalho (e você não está no Google App Engine) você pode manter o Pedido de volta e chamada request.cancel (). Isso vai acabar pedido do navegador, mas o servidor irá continuar a trabalhar.
Dependendo do formato dos dados que estão retornando, você pode ter o flush servidor alguns dados vazios para o cliente periodicamente enquanto a chamada está processessing. Isso fará com que o flush para lançar uma IOException se o cliente cancelou o pedido ea conexão HTTP é encerrada. Você pode então pegar este pedido e parar processessing o pedido no lado do servidor.