Код ответа ошибки SOAP Spring WS 500 вместо 400 - PullRequest
0 голосов
/ 17 октября 2018

В настоящее время я использую Spring WS (spring-ws-core: 2.1.0.RELEASE). У меня настроен глобальный метод защиты:

<security:global-method-security pre-post-annotations="enabled" secured-annotations="enabled"/>

У меня есть конечная точка, которая генерирует исключение AccessDeniedException, с которым я работаюSoapFaultMappingExceptionResolver, как это:

<bean id="exceptionResolver"
      class="org.springframework.ws.soap.server.endpoint.SoapFaultMappingExceptionResolver">
    <property name="defaultFault" value="SERVER"/>
    <property name="exceptionMappings">
        <value>
            org.springframework.security.access.AccessDeniedException=SENDER, 403 Forbidden
        </value>
    </property>
</bean>

Я получаю следующий ответ

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
  <env:Header/>
    <env:Body>
     <env:Fault>
       <env:Code>
        <env:Value>env:Sender</env:Value>
       </env:Code>
     <env:Reason>
        <env:Text xml:lang="en">403 Forbidden</env:Text>
    </env:Reason>
   </env:Fault>
 </env:Body>
</env:Envelope>

с HTTP-кодом ответа 500.

В соответствии со спецификацией спецификация мыла 1.2

он должен вернуть 400.

С моей стороны есть ошибка или это просто способ, которым Spring WS ее обрабатывает?

...