我想通过Spring-WS抛出自己的自定义异常。 我像这样编写我的Exception类:
@SoapFault(faultCode = FaultCode.CUSTOM, customFaultCode = "{http://www.myorg.com/test}INVALID_INPUT_DATA")
public class InvalidDataException extends Exception
{
public InvalidDataException(String errorMsg)
{
super(errorMsg);
}
public InvalidDataException(Throwable t)
{
super(t);
}
}
当我的服务使用text参数抛出此异常时,我将customFaultCode作为子代码获得了一个很好的soapFault:
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header/>
<env:Body>
<env:Fault>
<env:Code>
<env:Value>env:Receiver</env:Value>
<env:Subcode>
<env:Value xmlns:ns1="http://www.myorg.com/test">ns1:INVALID_INPUT_DATA</env:Value>
</env:Subcode>
</env:Code>
<env:Reason>
<env:Text xml:lang="en">WTF! Something wrong with your input data...</env:Text>
</env:Reason>
</env:Fault>
</env:Body>
</env:Envelope>
但我不想要一个faultCode env:Receiver ,我想将其更改为 env:Sender ,因为问题是输入数据在客户端! 但我不知道该怎么做。如果我在我的异常类中将faultCode更改为 FaultCode.SENDER ,我会得到一个 env:Sender faultCode,但我的customFaultCode不被考虑,我得到:
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header/>
<env:Body>
<env:Fault>
<env:Code>
<env:Value>env:Sender</env:Value>
</env:Code>
<env:Reason>
<env:Text xml:lang="en">WTF! Something wrong with your input data...</env:Text>
</env:Reason>
</env:Fault>
</env:Body>
</env:Envelope>
我在SimpleSoapExceptionResolver的javadoc中看到,故障代码始终设置为Receiver(对于SOAP 1.2)。 我怎么能改变这个?
Stieuma