2015-05-11 4 views
0


Это относится к одной из классических проблем с сортировкой JAXB при работе с унаследованными классами маршаллинга/unmarshalling. Обычными решениями являются либо использование @XmlSeeAlso, либо создание контекста дочернего класса с использованием JAXBContext.newInstance(child.class). Но в нашем случае мы имеем дело с архитектурой типа плагинов (Java ServiceLoader), в которой мы не знаем, какой плагин загружаться во время выполнения, но сообщения запроса плагина расширяют общий класс RequestMessage и ответные сообщения класса ResponseMessage. Таким образом, было бы невозможно использовать любой из @XmlSeeAlso или новый контекстный параметр в этом случае, поскольку он привязал бы к создаваемому и прикрепленному плагину.Относительно JAXB unmarshalling для унаследованных классов

Есть ли другие альтернативы, использующие JAXB? Или нам нужно использовать любые другие альтернативы JAXB, такие как Xstream?

Спасибо,
Рисовых

ответ

0

Если плагины все доступны, прежде чем создать контекст JAXB, вы можете использовать сканирование пути класса, чтобы обнаружить классы, которые прямо или косвенно расширить RequestMessage и автоматически включать их в списке классов ,

+0

Привет, сорок два, проблема заключается в обнаружении этих классов на стороне сервера (JBoss, RestEasy), в то время как плагин-архитектура находится на стороне клиента, поэтому плагины недоступны в пути к классам сервера, если только они не добавлены как зависящая от времени выполнения, которая поражает цель создания плагинов. – Paddy

Смежные вопросы