Błąd tymczasowy Apache HttpClient: NoHttpResponseException
Mam usługę internetową, która akceptuje metodę POST z XML. Działa dobrze, a następnie przy jakiejś przypadkowej okazji nie komunikuje się z serwerem rzucającym wyjątek IOException z komunikatemThe target server failed to respond
. Kolejne wywołania działają dobrze.
Zdarza się to głównie, gdy wykonuję kilka połączeń, a następnie zostawiam aplikację bezczynną na 10-15 minut. pierwsze wywołanie, które wykonuję, zwraca ten błąd.
Próbowałem kilku rzeczy ...
Skonfigurowałem procedurę ponawiania prób
<code>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); </code>
ale ta próba nigdy nie została wywołana. (tak, używam odpowiedniej klauzuli instanceof). Podczas debugowania ta klasa nigdy nie jest wywoływana.
Próbowałem nawet skonfigurowaćHttpProtocolParams.setUseExpectContinue(httpClient.getParams(), false);
ale bezużyteczny. Czy ktoś może zasugerować, co mogę teraz zrobić?
WAŻNY Oprócz zastanowienia się nad tym, dlaczego otrzymuję wyjątek, jedną z ważnych kwestii jest to, dlaczego nie działa tutaj retryhandler?