我正在开发一些基于 Web 服务的应用程序,并且我有一个关于 Apache CXF 解组的问题。在我们的项目中,我们使用 CXF 2.4.1 版本。
当某些 SOAP 请求不正确(例如,某些字段是文本而不是数字)时,CXF 会抛出标准 SOAPFaultException 并且 SOAP 响应是使用标准字段构建的,例如:
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Unmarshalling Error: some field missing</faultstring>
</soap:Fault>
项目要求表明,如果出现任何故障系统需要以其他格式响应,例如:
<soap:body>
<ResponseState>
<ErrorCode>2732</ErrorCode>
<ErrorMessage>Unmarshalling Error: some field missing</ErrorMessage>
<ErrorDetails> some details </ErrorDetails>
<some other fields>
...
</ResponseState>
</soap:body>
所以问题是:我怎样才能以某种方式覆盖这个错误处理并以我的格式而不是默认格式响应?
提前致谢。
PS 我试图研究一些 ValidationEventHandler 主体,但它在 CXF 2.0 及更高版本中以其他方式工作。