soap spring ws -how自定义<faultcode> soapenv:服务器</faultcode>到<faultcode>一些错误代码.eg(一个数字)</faultcode>

时间:2015-09-04 09:54:13

标签: java spring web-services soap

我正在使用soap spring ws来创建一个soap webservice,我已经成功了 now.Now我正在这个肥皂服务中做错误实现,我是 能够使用我创建的类来完成它,如下所示

public class ServiceSoapFaultMappingExceptionResolver extends SoapFaultMappingExceptionResolver

并在以下重写函数中,

@Override
 protected void customizeFault(Object endpoint, Exception ex, SoapFault fault) {
//code for adding fault details

    Result result = fault.addFaultDetail().getResult();

            // marshal
            try {
                 JAXBContext.newInstance(ExceptionListType.class).createMarshaller().marshal(exceptionList, result);

}

我创建了自定义soap fault对象并返回了该对象。 此返回的自定义soap错误将出现在详细信息标记内。 所以我的错是这样的。

<soapenv:Fault>
         <faultcode>soapenv:Server</faultcode>
         <faultstring>INVALID NUMBER</faultstring>
         <detail>
            <ns5:exceptionListType xmlns:ns5="http://wellpoint.com/esb/header/v2">
               <ns5:errorCount>1</ns5:errorCount>
               <ns5:Exception>
                  <ns5:UUID> 889c-6f73671534af</ns5:UUID>
                  <ns5:timestamp>09/04/2015 05:47:40</ns5:timestamp>
                  <ns5:node>mynode</ns5:node>
                  <ns5:process>JAVA</ns5:process>
                  <ns5:component>Unknown Component</ns5:component>
                  <ns5:code>5009</ns5:code>
                  <ns5:severity>FATAL</ns5:severity>
                  <ns5:message>An unexpected server error occurred: INVALID   NUMBER</ns5:message>
               </ns5:Exception>
            </ns5:exceptionListType>
         </detail>
      </soapenv:Fault>

现在我想要做的是我有一个与上述错误相关的错误代码,它正在代码标签里面。但我需要这个错误代码进入这个标签

<faultcode>soapenv:Server</faultcode>

喜欢

<faultcode>5009</faultcode>

。我有很多谷歌搜索,没有运气。我知道,除了可用于此的预定义值集之外,有一个值不是一个好习惯。但我的客户需求就是这个。 如果有人知道答案,请帮助我。 非常感谢。

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决问题的方法。 在customizeFault方法中,我输入如下代码。

    SoapFaultDefinition soapFaultDefinition = new SoapFaultDefinition();
    String ENVELOPE_NAMESPACE_URI = "http://schemas.xmlsoap.org/soap/envelope/";
    QName FAULT_NAME = new QName(ENVELOPE_NAMESPACE_URI, "5999, "e");
    //      soapFaultDefinition.setFaultStringOrReason("--" + ex);
    //      soapFaultDefinition.setLocale(Locale.ENGLISH);
    soapFaultDefinition.setFaultCode(FAULT_NAME);
    super.setDefaultFault(soapFaultDefinition);