2012-04-02 100 views
0

我使用碼頭的嵌入式版本。我注意到以下幾點:嵌入式碼頭響應

的處理方法

,如果我想直接與HTTP響應OK響應,然後睡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代碼()函數來完成。我是telnet老實說。 – GRIM 2012-04-03 05:40:40

+0

我不知道如何關閉句柄方法之前退出該連接。但是爲什麼在關閉連接後需要等待?我覺得很奇怪。 – jordeu 2012-04-03 05:49:16

+0

噢,我剛剛添加了睡眠時間作爲發送響應後發生的某些操作的示例。噢,謝謝,無論如何,這應該足以成爲我的朋友! – GRIM 2012-04-04 11:19:10