Для 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);
}
}
Это не позволяет мне предпринимать какие-либо действия, если сообщение является входящим.Поскольку в исходном коде никогда не было каких-либо заметных изменений, это, кажется, предназначено.Есть ли другой подход?