【问题标题】:Implementing XSD's Exception Classes in Spring Web Service (SOAP)在 Spring Web Service (SOAP) 中实现 XSD 的异常类
【发布时间】:2020-02-19 17:26:38
【问题描述】:

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

我遇到的问题是相关联的/实际上是相同的: 1. 我似乎无法将“新”Web 服务中抛出的异常“接收”回给消费者。
2. 在SOAPUI 中查询端点时,Web Service 的Exception 类看起来好像是一种单向方法。

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

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

原始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>

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

【问题讨论】:

    标签: spring-boot soap jax-ws spring-ws


    【解决方案1】:

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

    【讨论】:

    • 谢谢 - 我看过 Maarten Mulders 指南(其他两个太老了,现在无法实施),花了一段时间,但终于让它工作了。他使用了与普通库相同的“示例”类名,这让我很反感!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    相关资源
    最近更新 更多