CXF RetryStrategy не работает для Soap Webservice - PullRequest
0 голосов
/ 18 июня 2019

Я использую CXF для клиента веб-службы SOAP и каким-то образом не могу получить работающую RetryStrategy в качестве FailoverFeature.Другой LoggingFeature работает нормально.Это моя конфигурация Spring:

@Bean
public MyPort myPort() {
    final RetryStrategy retryStrategy = new RetryStrategy();
    retryStrategy.setMaxNumberOfRetries(5);
    retryStrategy.setDelayBetweenRetries(3000);
    FailoverFeature failoverFeature = new FailoverFeature();
    failoverFeature.setStrategy(retryStrategy);
    failoverFeature.setTargetSelector(new FailoverTargetSelector(endpointAddress));

    final LoggingFeature logFeature = new LoggingFeature();
    MyService service = new MyService(WSDL_LOCATION, logFeature, failoverFeature);
    MyPort port = service.getPort();

    Client client = ClientProxy.getClient(port);
    client.getRequestContext().put(ENDPOINT_ADDRESS, endpointAddress);

    return port;
}

CXF, похоже, с радостью принимает FailoverFeature во время загрузки:

INFO  org.apache.cxf.clustering.FailoverTargetSelector - corid= Using failover strategy org.apache.cxf.clustering.RetryStrategy@36931450

Но запрос, подобный следующему, не будет повторяться, потому что я получаю (предназначен) "502: Соединение отказано" примерно через 2 сек.

myPort.doSomething()

Что я делаю не так?

1 Ответ

0 голосов
/ 20 июня 2019

Мой обходной путь - использовать механизм повтора Spring:

@Retryable(
        value = {HTTPException.class},
        backoff = @Backoff(delay = 3000))
public void callWebservice() { ... }
...