Это относится к одной из классических проблем с сортировкой JAXB при работе с унаследованными классами маршаллинга/unmarshalling. Обычными решениями являются либо использование @XmlSeeAlso
, либо создание контекста дочернего класса с использованием JAXBContext.newInstance(child.class)
. Но в нашем случае мы имеем дело с архитектурой типа плагинов (Java ServiceLoader), в которой мы не знаем, какой плагин загружаться во время выполнения, но сообщения запроса плагина расширяют общий класс RequestMessage и ответные сообщения класса ResponseMessage. Таким образом, было бы невозможно использовать любой из @XmlSeeAlso
или новый контекстный параметр в этом случае, поскольку он привязал бы к создаваемому и прикрепленному плагину.Относительно JAXB unmarshalling для унаследованных классов
Есть ли другие альтернативы, использующие JAXB? Или нам нужно использовать любые другие альтернативы JAXB, такие как Xstream?
Спасибо,
Рисовых
Привет, сорок два, проблема заключается в обнаружении этих классов на стороне сервера (JBoss, RestEasy), в то время как плагин-архитектура находится на стороне клиента, поэтому плагины недоступны в пути к классам сервера, если только они не добавлены как зависящая от времени выполнения, которая поражает цель создания плагинов. – Paddy