Переопределить обработку ошибок CXF

Я работаю над приложением, основанным на веб--сервисах, и у меня есть вопрос о распаковке 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 и выше он работает по-другому.

9
задан Viktor Molokanov 17 April 2012 в 15:59
поделиться