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

Implementing XSD's Exception Classes in Spring Web Service (SOAP)

我正在使用 Spring WS 在 Spring 引导中创建 SOAP Web 服务。我正在重新创建的服务是使用 JavaX JWS 的旧技术的服务 运行 的克隆,其中 classes 从 XSD.

生成

我遇到的问题确实 linked/the 相同: 1. 我似乎无法 'receive' 将 'new' Web 服务中抛出的异常返回给消费者。
2. 在 SOAPUI 中查询端点时,Web 服务的异常 class 似乎是一种单向方法。

我认为这是因为 Spring WS 不正确 implementing/understanding 异常 classes.

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

原始JavaX服务returns(以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>

我找不到任何关于异常应该如何 build/configured 以生成相同 <ns2> 嵌套元素的文档或指南。有没有办法准确地将异常传回,使其看起来与在服务中一样?

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