2014-01-09 4 views
1

В моем текущем проекте мы используем JAXB beans для Hibernate и для отправки данных в XML и JSON через [REST API] [1]. Мы хотим иметь возможность произвольно включать любой компонент JAXB в объект Result, который мы используем в качестве REST VO (например, как элемент <xsd:any>), не имея отдельного метода сортировки для каждого другого типа, который может быть включен. Кажется, что самый простой способ заставить это работать - иметь аннотацию @XmlRootElement для каждого компонента.Есть ли проблемы с добавлением @XmlRootElement для каждого компонента JAXB?

  1. Это хороший подход к «бесшовной» сортировке?
  2. Есть ли последствия для этого?

Мы используем Java 1.6, EclipseLink/MOXy для jaxb, Jersey 1.x для REST и сервера приложений Tomcat. Наши бобы генерируются из файлов XML-схемы с помощью xjc и с использованием annox для добавления аннотации во время генерации.

[1]: В идеальном мире объекты данных будут отдельно от объектов предметной области, но это небольшой проект небольшой команды, поэтому развязка между базой данных и API не является необходимым

ответ

2

ли есть ли проблемы с добавлением @XmlRootElement для каждого компонента JAXB?

No.


Мы хотим, чтобы иметь возможность произвольно включать любой JAXB боб в результате

Общий Result объект с поля/свойства аннотацию @XmlAnyElement(lax=true) является хороший способ создать общее сообщение, в котором могут использоваться произвольные объекты полезной нагрузки, аннотированные @XmlRootElement.


мы используем в качестве REST VO (например, в качестве элемента), не имея отдельный метод сортировочной для каждого другого типа, которые могут быть включены .

Мое беспокойство здесь в том, что данные, которые вы получите, не будут выглядеть так, как вы этого хотите. SOAP имеет формат сообщения о конверте, в котором данные находятся в теле. Обычно у REST этого нет. Когда я обращаюсь к конечной точке RESTful, я вообще не ожидаю, что какой-то конверт будет обертывать данные.

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