问题
默认情况下,当RuntimeException
我的服务器上发生未捕获的扩展异常时,JAX-WS 构建以下 SOAP 错误消息:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<S:Fault xmlns:ns3="http://www.w3.org/2003/05/soap-envelope">
<faultcode>S:Server</faultcode>
<faultstring>[runtime exception message here]</faultstring>
<detail>
<ns2:exception class="java.lang.RuntimeException" note="To disable this feature, set com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace system property to false" xmlns:ns2="http://jax-ws.dev.java.net/">
<message>[runtime exception message here too]</message>
<ns2:stackTrace>
[stack trace details]
</ns2:stackTrace>
</ns2:exception>
</detail>
</S:Fault>
</S:Body>
</S:Envelope>
哪种有意义,除了我想改变这种行为以便发送它:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<S:Fault xmlns:ns3="http://www.w3.org/2003/05/soap-envelope">
<faultcode>S:Server</faultcode>
<faultstring>Something wrong happened and it's totally our fault</faultstring>
</S:Fault>
</S:Body>
</S:Envelope>
请注意,消息不应该是 RuntimeException 的消息内容,而是自定义静态消息,用于扩展可能发生在服务器端的任何异常。RuntimeException
我无法更改 WSDL,也不想设置自定义异常。
我正在使用弹簧插件:com.sun.xml.ws.transport.http.servlet.WSSpringServlet
我怎样才能做到这一点?