Я делаю очень простую вещь, которая должна просто работать, ИМО. У меня есть такой ресурс, как:Возвращающиеся суперклассы с ресурса Джерси
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("{nodeType}/{uuid}")
public Object getResourceInfo(@PathParam("nodeType") String nodeType,
@PathParam("uuid") String uuid,
@Context SecurityContext authority) { ...
Примечание. Я возвращаю объект типа. Это связано с тем, что в зависимости от вызова (здесь, в зависимости от аргумента nodeType) я хочу вернуть другой конкретный класс (который всегда будет @XmlRootElement), и он будет выведен в ответ.
Однако это не работает. Я получаю исключение, как:
Exception Description: A descriptor for class com.mycompany.XmlElementTypeInstance was not found in the project. For JAXB, if the JAXBContext was bootstrapped using TypeMappingInfo[] you must call a marshal method that accepts TypeMappingInfo as an input parameter.
Если я меняю объект на один подкласс, он работает. Но я хочу, чтобы он мог обрабатывать любой подкласс, XmlElementTypeInstance, XmlElementTypeInstance2, etcetc.
Я попытался создать общий интерфейс, из которого все подклассы XmlElementTypeInstance выводятся, но тогда я получаю только эти свойства в интерфейсе, а не дополнительные свойства в подклассах. Игра с @XmlElementRef и добавление всех возможных свойств к общему интерфейсу чрезвычайно уродлива и не может работать корректно, чтобы генерировать JSON, я хочу, поэтому, пожалуйста, не предлагайте этого. =)
Есть ли способ сделать это? Это похоже на простую, базовую, необходимую функциональность ... любые другие рамки REST, которые я использовал, не проблема ...
Я рекомендую возвращать 'String' и анализировать объект вручную или возвращать' Map ', который представляет данные, которые вы хотите/должны выставить. –
Если я делаю что-либо из этого, я мог бы также вытащить Джерси на бордюр и просто написать JSONObject сам и манипулировать объектами ответа контейнера на низком уровне. Нет, это не ответ. Я хочу отображать объекты JAXB. – BadZen
Хорошо, тогда добро пожаловать в одну из головных бонусов/ограничений JAXB. –