0

4秒間待ってから処理を続行した後、(サーブレットによって)応答を返すサーバーと通信するクライアントがあります。

問題は、サーバーの応答(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();
    }

どうもありがとうございます

4

2 に答える 2

1

writer.flush()を使用して、出力がバッファリングされないようにします。

于 2012-07-16T14:00:41.973 に答える
0

バッファサイズに達したため、応答がコミットされていると思います。

ここを見つける応答がコミットされる理由

于 2012-07-16T14:00:35.277 に答える