Обработка сообщения inboud с использованием Apache CXF - PullRequest
0 голосов
/ 12 декабря 2018

Для JAX-WS, использующего Apache CXF, следующий обработчик должен использоваться для обработки любого исключения, сгенерированного во время обработки сообщения.Это могут быть, например, синтаксически неправильно отформатированные сообщения SOAP.

public class MyHandler implements SOAPHandler<SOAPMessageContext> {

    @Override
    public boolean handleFault(SOAPMessageContext context) {
        // some action
    }
}

Теперь проблема в том, что этот обработчик никогда не выполняется, поскольку фактическая реализация из SOAPHandlerInterceptor проверяет, является ли сообщение исходящим:

public void handleFault(SoapMessage message) {
    if (binding.getHandlerChain().isEmpty()) {
        return;
    }
    if (getInvoker(message).getProtocolHandlers().isEmpty()) {
        return;
    }
    if (getInvoker(message).isOutbound() // <<< this line
        && !chainAlreadyContainsSAAJ(message)) {
        SAAJ_OUT.handleFault(message);
    }
}    

Это не позволяет мне предпринимать какие-либо действия, если сообщение является входящим.Поскольку в исходном коде никогда не было каких-либо заметных изменений, это, кажется, предназначено.Есть ли другой подход?

...