在 Spring Web Service (SOAP) 中实现 XSD 的异常类



我正在使用Spring WS在Spring Boot中创建一个SOAP web服务。我正在重新创建的服务是在使用JavaX JWS的旧技术上运行的服务的克隆,其中的类是从XSD生成的。

我遇到的问题有联系/实际上是一样的:1.我似乎无法将"新"Web服务中抛出的异常"接收"回消费者
2.在SOAPUI中查询端点时,Web服务的Exception类显示为单向方法。

我认为这是因为SpringWS没有正确地实现/理解Exception类。

当在新服务中抛出异常时,使用者会收到com.sun.xml.internal.ws.fault.ServerSOAPFaultException,而不是Web服务中抛出的exception。

原始JavaX服务返回(以TestException为例(:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
<faultcode>S:Server</faultcode>
<faultstring>Test</faultstring>
<detail>
<ns2:TestException xmlns:ns2="http://test.co.uk/">
<code>abc123</code>
<message>Test</message>
</ns2:TestException>
</detail>
</S:Fault>
</S:Body>
</S:Envelope>

我找不到任何关于如何构建/配置异常以生成相同<ns2>嵌套元素的文档或指南。有没有一种方法可以准确地将异常传递回来,使其看起来与服务中的异常相同?

以下是一些实现自定义异常解析器的示例,它扩展了AbstractEndpointExceptionResolver并为不同的异常类型定义了SOAP故障映射:示例1、示例2、示例3。

最新更新