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

问题描述 投票:0回答:1

我正在使用Spring WS在Spring Boot中创建SOAP Web服务。我正在重新创建的服务是在使用JavaX JWS的较旧技术上运行的服务的克隆,并具有从XSD生成的类。

我所遇到的问题是相互联系的,或者确实相同:1.我似乎无法“接收”在“新” Web服务中抛出的异常返回给使用者。2.在SOAPUI中查询端点时,Web Service的Exception类似乎是一种单向方法。

我相信这是因为Spring WS没有正确实现/理解Exception类。

当新服务中引发异常时,使用者将收到com.sun.xml.internal.ws.fault.ServerSOAPFaultException,而不是Web服务中引发的异常。

原始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>嵌套元素的任何文档或指南。有没有一种方法可以准确地将异常传回,使其看起来与服务中的异常相同?]

spring-boot soap jax-ws spring-ws
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.