Я столкнулся с очень сложным сценарием, у меня есть веб-сервис, использующий SOAP 1.2, и я хотел бы аккуратно обработать исключение, если сообщение было отправлено с заголовком SOAP 1.1 вместо 1.2.
В настоящее время моей реализацией messageFactory является SAAJ, и она выдает SoapMessageCreationException, когда я отправляю заголовки 1.1, а мой код ниже не работает и не распознает ошибку должным образом:
@Bean
public SoapFaultMappingExceptionResolver exceptionResolver(){
SoapFaultMappingExceptionResolver exceptionResolver = new DetailSoapFaultDefinitionExceptionResolver();
SoapFaultDefinition faultDefinition = new SoapFaultDefinition();
faultDefinition.setFaultCode(SoapFaultDefinition.SERVER);
exceptionResolver.setDefaultFault(faultDefinition);
Properties errorMappings = new Properties();
errorMappings.setProperty(Exception.class.getName(), SoapFaultDefinition.SERVER.toString());
errorMappings.setProperty(ServiceFaultException.class.getName(), SoapFaultDefinition.SERVER.toString());
exceptionResolver.setExceptionMappings(errorMappings);
exceptionResolver.setOrder(1);
return exceptionResolver;
}
Я взял пример из https://memorynotfound.com/spring-ws-add-detail-soapfault-exception-handling/, однако в моем случае он, похоже, не работает.
Единственный подход, который я нашел, который работает, - это Как вернуть пользовательский SOAP Ошибка из Spring Служба конечных точек загрузки? , которая должна быть излишней.
Если кто-нибудь сталкивался с этой проблемой раньше, мне бы хотелось несколько указателей!