当前我正在使用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。
根据规范soap 1.2 spec
它应该返回400。
Spring WS处理错误的方式或方式是否有误?