2012-04-02 10 views
0

Я использую встроенную версию причала. Я заметил следующее:Embedded Jetty Response

в методе обработчика, если я хочу напрямую ответить HTTP-ответом, а затем спать в течение x секунд, обработчик делает обратное. Это нормально?

функция ручки заключается в следующем:

public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) 
      throws IOException, ServletException { 

response.setContentType("text/html;charset=utf-8"); 
      response.setStatus(HttpServletResponse.SC_OK); 
      baseRequest.setHandled(true); 
      response.getWriter().println("OK"); 

Thread.sleep(10000); 

} 

ублюдок спит 10 секунд, а затем возвращая ответ, почему это происходит?

ответ

1

Вам нужно позвонить

response.flushBuffer(); 

перед сном Нить.

Из JavaDoc этого метода:

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

+0

Я попробовал, и я получил ответ OK, однако соединение не закрывается до тех пор, пока функция Thread.sleep() не будет выполнена. Честно говоря, я telnetting. – GRIM

+0

Я не знаю, как закрыть соединение до выхода из метода дескриптора. Но почему вам нужно ждать после закрытия соединения? Мне это кажется странным. – jordeu

+0

Ну, я просто добавил время сна как пример некоторой операции, выполняемой после отправки ответа. Ну ладно, спасибо, так или иначе, этого пока достаточно, чтобы быть моим другом! – GRIM

Смежные вопросы