2012-07-16 191 views
0

我有一個客戶端與服務器進行通信,該服務器在等待四秒鐘後返回一個響應(通過servlet),然後繼續處理。延遲接收HttpResponse

問題是服務器響應(200 OK)在所有處理結束時返回,而不是在4秒暫停後返回。我不明白,爲什麼

這裏是我的代碼

try { 
     mimeTraitement.getMime(client); 
     mimeTraitement.analyseMime(xmlDir); 

     if (mimeTraitement.checkMime()) { 

       System.out.println("Acquittement de la requete dans " + BeanParametrageTimers.getTimeWaitResponseOkToRequest()/1000+ " secondes"); 
       synchronized(response) 
       { 
       try { 
        response.wait(BeanParametrageTimers.getTimeWaitResponseOkToRequest()); 
       } catch (InterruptedException e1) { 

        e1.printStackTrace(); 
       } 
      } 

      writer.write("200 OK (MimeMultipart valide)");// this line is displayed after the processing of postXml.sendXml() on my java console 
      PostXml postXml = new PostXml(xmlDir,mimeTraitement.getGetUrl()); 
      System.out.println("Envoi du fichier xml dans " + BeanParametrageTimers.getTimeWaitSendXmlToRequest()/1000 + " secondes"); 
      Thread.sleep(BeanParametrageTimers.getTimeWaitSendXmlToRequest()); 
      postXml.sendXml(); 

     } else 
      writer.write("400 POK (MimeMultipart non valide)"); 
    } catch (MessagingException e) { 
     e.printStackTrace(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 

片段非常感謝您

回答

0

我想回應是越來越致力於因爲緩衝區大小已經達到。

在這裏找到Reasons for response getting committed

+0

謝謝,所以它是一個緩衝區大小問題。我怎樣才能增加它(我不只是servlet)。謝謝 – ulquiorra 2012-07-16 14:35:28

1

使用writer.flush()以確保輸出不會被緩衝。

+0

感謝您的幫助,但它沒有做任何事情。響應仍然在最後發送,而不是在response.wait()之後發送 – ulquiorra 2012-07-16 14:34:41