【发布时间】:2015-01-26 20:49:22
【问题描述】:
在迁移到 Spring WS 并使用 wsdl 中的 JAXB 生成 Soap 消息中使用的对象的过程中。我在尝试将自定义异常放入 Soap 故障消息的详细信息字段时遇到问题。以下是现有的故障信息是如何返回的(详细嵌入FooException)。
<env:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Header/>
<env:Body>
<env:Fault>
<faultcode>env:Server</faultcode>
<faultstring>Service specific exception: com.test.FooException: Invalid authentication credentials. Please try again.</faultstring>
<detail>
<n1:FooException xsi:type="n1:FooException" xmlns:n1="java:com.test">
<errorCode xsi:type="xsd:int">101</errorCode>
<errorReason xsi:type="xsd:string">InvalidUserCredentials:Invalid authentication credentials. Please try again</errorReason>
</n1:FooException>
</detail>
</env:Fault>
</env:Body>
</env:Envelope>
我在 spring config xml 文件中设置了一个客户 exceptionResolver bean 标识符。
<bean id="exceptionResolver" class="com.test.FacadeExceptionHandler">
<property name="order" value="1"></property>
<property name="defaultFault" value="SERVER"/>
<property name="exceptionMappings">
<value> com.test.FooException=SERVER,FaultMsg </value>
</property>
</bean>
我创建了 FacadeExceptionHandler 并且它正在被调用,但我无法弄清楚如何将 FooException 放入故障消息的详细信息部分。
任何帮助将不胜感激!!!
提前感谢您的帮助!
【问题讨论】:
-
向我们展示
FooException的实现
标签: spring web-services exception soap jaxb