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