Я работаю над приложением, основанным на веб--сервисах, и у меня есть вопрос о распаковке 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>
. вопрос :как я могу каким-то образом переопределить эту обработку ошибок и ответить в моем формате, а не по умолчанию?
Заранее спасибо.
П.С. Я попытался изучить некоторые принципы ValidationEventHandler, но в CXF 2.0 и выше он работает по-другому.