Поймать jaxb unmarshal исключение объекта привязки

Я использую jaxb cxf, чтобы разобрать запрос xml.

Я ищу способ проверить входной xml-запрос, я прочитал следующие две супер статьи о проверке, но они не совсем то, что мне нужно.

http://blog.bdoughan.com/2010/11/validate-jaxb-object-model-with-xml.html

http://blog.bdoughan.com/2010/12/jaxb-and-marshalunmarshal-schema.html

На самом деле, вместо того, чтобы сразу останавливать весь процесс десортировки и возвращать сообщение об исключении в ответ, мне нужно, чтобы процесс демаршаллинга продолжал работать и иметь возможность связать исключение с объектом, элемент xml которого не проверен. Таким образом, приложение все еще может выполнять следующие задания на других хорошо неупорядоченных объектах, кроме этого, в конце возвращаемого ответа xml я могу показать сообщение об исключении для этого конкретного объекта, а также хорошие результаты для другие объекты.

Это возможно?

любая помощь действительно ценится,


person yinan liu    schedule 14.01.2013    source источник


Ответы (1)


Вы можете установить экземпляр ValidationEventCollector на Unmarshaller. В нем будут храниться все экземпляры ValidationEvent, обнаруженные во время демаршалирования. После операции unmarshal, если она собрала какие-либо события, вы можете выбрать создание Exception.

Кстати, я рад слышать, что вам понравились эти посты.

person bdoughan    schedule 14.01.2013
comment
спасибо за ваш ответ и ваши супер статьи, я попробую. - person yinan liu; 15.01.2013
comment
Может ли ValidationEventCollector сказать, для какого объекта он получает исключение? например, как и в приведенном ниже xml, может validationEventCollector указать, что формат даты рождения первого лица неверен? ‹лица› ‹имя человека=первый› ‹день рождения›fadsfdas‹/день рождения› ‹/человек› ‹имя человека=первый› ‹день рождения›12/02/2012‹/день рождения› ‹/человек› ‹/человек› - person yinan liu; 15.01.2013