私はXMLでPOSTメソッドを受け入れているwebserviceを持っています。それは正常にいくつかのランダムな機会にうまくいきます、それはメッセージとのIOExceptionをスローするサーバーとの通信に失敗しますThe target server failed to respond
。その後の呼び出しは正常に動作します。Apache HttpClient暫定的なエラー:NoHttpResponseException
ほとんどの場合、私はいくつかの呼び出しを行い、10-15分のように私のアプリケーションをアイドル状態のままにしています。それ以降の最初の呼び出しでこのエラーが返されます。私は物事のカップルを試してみました
...
Iセットアップ
HttpRequestRetryHandler retryHandler = new HttpRequestRetryHandler() {
public boolean retryRequest(IOException e, int retryCount, HttpContext httpCtx) {
if (retryCount >= 3){
Logger.warn(CALLER, "Maximum tries reached, exception would be thrown to outer block");
return false;
}
if (e instanceof org.apache.http.NoHttpResponseException){
Logger.warn(CALLER, "No response from server on "+retryCount+" call");
return true;
}
return false;
}
};
httpPost.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, retryHandler);
などの再試行ハンドラが、これreteyは決して呼ばないました。 (はい、私は正しいinstanceof句を使用しています)。このクラスをデバッグすることは決して呼び出されません。
私もHttpProtocolParams.setUseExpectContinue(httpClient.getParams(), false);
を設定しようとしましたが、使用しませんでした。誰かが今何をすることができるかを提案することはできますか?
重要 retryhandlerがここで働いていない理由を私は例外を取得しています理由を考え出すのほかに、私が持っている重要な問題の一つはありますか?
を私はそれがクライアントコードで何かあるとは思いません。宛先サーバーが応答を処理するには多忙であるかもしれませんか? – kosa
宛先サーバーを攻撃するためにフィドラーを試しましたが、うまくいきました。私も、同じステップを実行して、フィドラーを使用してエラーを再現しようとしましたが、運はありません! –
サービスを実行しているWebサーバの種類は何ですか?また、10〜15分待機中にサービスが他の要求を受信しているか、サービスがアイドル状態になっていますか? – Shawn