У мене є веб-служба, яка приймає метод POST із XML. Це працює нормально, то в деяких випадкових випадках, він не може зв'язатись із сервером, викидаючи IOException із повідомленням The target server failed to respond
. Подальші дзвінки працюють нормально.
Це трапляється здебільшого, коли я роблю кілька дзвінків, а потім залишаю програму в режимі очікування приблизно 10-15 хв. перший виклик, який я роблю після цього, повертає цю помилку.
Я спробував кілька речей ...
Я встановлюю обробник повторної спроби, як
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);
але ця повторна спроба так і не отримала виклику. (так, я використовую речення right instanceof). При налагодженні цей клас ніколи не викликається.
Я навіть намагався налаштувати, HttpProtocolParams.setUseExpectContinue(httpClient.getParams(), false);
але користі немає. Хтось може підказати, що я можу зробити зараз?
ВАЖЛИВО Окрім з'ясування, чому я отримую виняток, одне з важливих занепокоєнь у мене полягає в тому, чому тут не працює ретранслятор?