Как изящно обработать SoapMessageCreationException? - PullRequest
0 голосов
/ 14 июля 2020

Я столкнулся с очень сложным сценарием, у меня есть веб-сервис, использующий 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 Служба конечных точек загрузки? , которая должна быть излишней.

Если кто-нибудь сталкивался с этой проблемой раньше, мне бы хотелось несколько указателей!

...