使用spring-ws动态定制SoapFault

问题描述

我正在使用具有动态wsdl生成功能的spring-ws工作,并且在特定故障的客户端翻译上遇到问题。返回的一般故障都可以解决。

以下是生成wsdl的xsd的示例:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       targetNamespace="http://myservice/createroad/V1"
       elementFormDefault="qualified" version="1.0.0">

<xs:element name="CreateRoadRequest">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Title" type="xs:string"/>
            <xs:element name="MaterialType" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="CreateRoadResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="resolution" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="CreateRoadFault" type="SoapFault"/>
<xs:element name="CreateRoadHeader" type="Header"/>



  <xs:complexType name="SoapFault">
     <xs:sequence>
        <xs:element name="Code" type="xs:string"/>
        <xs:element name="Message" type="xs:string"/>
     </xs:sequence>
  </xs:complexType>


  <xs:complexType name="Header">
     <xs:sequence>
         <xs:element name="Ticket" type="xs:string"/>
     </xs:sequence>
 </xs:complexType>

</xs:schema>

如果我为此服务的该对象返回特定的Fault对象 CreateRoadFault ,则客户端不会将其视为异常。我观察到的是返回的响应状态标头是200。返回通用 Fault 对象时,返回的状态标头是500。

返回的Soap xml对象的修改已完成:

 public class DetailSoapFaultDefinitionExceptionResolver implements EndpointExceptionResolver,Ordered

问题1:在客户端的try的catch分支上输入状态标头应为500?

问题2:如何修改spring-ws中 EndpointExceptionResolver 接口的实现之一的返回状态?

问题3:有人有使用spring-ws和自定义Soap Faults的例子吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)