2012-07-16 128 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