Остановите cxf http, повторите попытку, если сервер закрыл соединение / сброс подключения - PullRequest
0 голосов
/ 08 сентября 2018

Мое приложение использует сервис, используя cxf 2.7.11. Всякий раз, когда хост-сервер сбрасывает / сбрасывает соединение в течение времени ожидания, клиент повторяет запрос.

В одном из блогов, с которыми я сталкивался, говорится, что «HttpClient будет автоматически повторять до 5 раз те методы, которые завершаются неудачно с исключением транспорта, пока HTTP-запрос все еще передается на целевой сервер»

Моя цель - остановить попытку. Ниже мой код конфигурации клиента. Пожалуйста, дайте мне знать, как остановить попытку.

Client clientPort = ClientProxy.getClient(binder);
//Added to test stop retry but not working--start
HttpMethodRetryHandler retryhandler = new DefaultHttpMethodRetryHandler(0,false);
client.getRequestContext().put(HttpMethodParams.RETRY_HANDLER,retryhandler);
//Added to test stop retry but not working--END
client.getRequestContext().put(Message.ENDPOINT_ADDRESS,url);
client.getRequestContext().put("soap.no.validate.parts", "true");
client.getRequestContext().put("set-jaxb-validation-event-handler", "false");
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(3000);
httpClientPolicy.setReceiveTimeout(100000);
httpClientPolicy.setAllowChunking(false);
http.setClient(httpClientPolicy);

Я тоже пробовал FailoverFeature, но не повезло.

FailoverFeature failoverFeature = new FailoverFeature();
RetryStrategy failoverStrategy = new RetryStrategy();
List<String> alternateAddress=new ArrayList<String>();
alternateAddress.add(url);
failoverStrategy.setAlternateAddresses(alternateAddress);
failoverStrategy.setMaxNumberOfRetries(0);
failoverStrategy.setDelayBetweenRetries(2000);
failoverFeature.setStrategy(failoverStrategy);
failoverFeature.initialize(client,client.getBus());
...