2014-01-29 3 views
0

Предположим, что этот сценарий: я отправляю запрос на свой сервер (apache tomcat) из браузера (firefox). Ответ приходит примерно через 2 минуты с сервера. Как я могу отменить этот запрос таким образом, чтобы мой сервер не продолжал делать ответ?
Когда пользователь отправляет запрос на сервер, обычно происходит переход на другую ссылку (или меню или отмену запроса) приложения, и для разработчиков так важно отменить такие случаи и снизить нагрузку на сервер.
ОК, тогда я хочу технику для обнаружения таких входящих запросов, которые отправляются на мой сервер, и отменить все действия для принятия ответа для клиента (поскольку клиент больше не ждет ответа сервера).
Не удалось найти полезную информацию в google и stack. Я также установил keep-alive-timeout в моем server.xml, но ничего не произошло! Я также читал эту тему cancle request, но это мне не помогло.Отменить Запрос с обозревателем

Поэтому, пожалуйста, помогите мне решить эту проблему ...

+0

жаль помощник вы не можете это сделать. После того, как код сервера имеет свои грязные руки по запросу. –

ответ

0

Вы можете отменить запрос отправки контента на его OutputStream (и топя его). Если пользователь отменяет запрос, сервлет потеряет соединение с браузером, а затем отправка контента в выходной поток вызовет исключение ClientAbortException, которое остановит процесс.

Попробуйте это:

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    ServletOutputStream out = response.getOutputStream(); 
    try { 
     out.println("<!DOCTYPE html>"); 
     out.println("<html><body>"); 
     out.println("<h1 id=\"count\"></h1>"); 
     for (int i = 0; i < 60; i++) { 
      Thread.sleep(1000); 
      out.print("<script>document.getElementById(\"count\").innerHTML=\"" + i + "\";</script>"); 
      out.flush(); 
      System.out.println(i); 
     } 
     out.println("</body></html>"); 
    } catch (Exception ex) { 
     System.out.println("Stoped due to " + ex.toString()); 
    } finally { 
     out.close(); 
    } 
} 
Смежные вопросы