Я не знаю, как лучше всего объяснить это, так что это может быть немного долго, пожалуйста, потерпите меня.
Допустим, у меня есть Java-бин с набором свойств:
public interface Customer {
public String getFirstName();
public String getLastName();
public Address getAddress(); // embedded bean with its own properties
... // lots more
}
Очевидно, есть соответствующая реализация, плюс определены соответствующие установщики (хотя для некоторых свойств сеттеры могут не отображаться в интерфейсе).
Существует служба (интерфейс POJO + реализация), которая определяет набор операций, которые могут выполняться над клиентами (CRUD, некоторые запросы find () и т. Д.). Сервис загружается через Spring, и все работает нормально локально и через RMI.
Теперь у меня есть клиент (приложение для iPhone), которому требуется доступ к небольшому подмножеству функциональных возможностей, предоставляемых через вышеуказанный API - подмножество как с точки зрения операций службы, так и свойств API. Идея состоит в том, чтобы представить это подмножество через API в стиле REST:
GET /services/customers/1234
возвращает
<customer>
<firstName>Homer</firstName>
<lastName>Simpson</lastName>
<city>Springfield</city>
</customer>
или, может быть, даже
<customer firstName="Homer" lastName="Simpson" city="Springfield" />
Вопрос в том, как мне это сделать? Я (кратко) посмотрел на JAXB / CXF / Jersey, и похоже, что мне нужно определить схему, сгенерировать на ее основе группу классов и скопировать данные из моих сущностей API в эти классы. Есть ли способ избежать всего этого?
В идеале я хотел бы аннотировать соответствующие свойства в моих объектах API и сделать так, чтобы они (и только они) были распределены "автоматически". Я в порядке с написанием специального интерфейса / реализации для конечной точки веб-службы, если это необходимо; аннотирование существующего было бы еще лучше.
Другой (более насущный) вопрос - я что-то делаю глупо? Есть ли более простой и / или лучший способ?
В прошлый раз, когда я работал с веб-сервисами, Axis был 1,1 раза, а в прошлый раз, когда я работал с iPhone, никогда не было :-), поэтому любые указатели будут высоко оценены.
Обновление: Чтобы уточнить - я ищу самый простой способ упорядочить подмножество свойств javabean в XML (или, может быть, JSON?) без необходимость писать / генерировать дополнительный класс для представления указанного подмножества свойств. Приведенный выше пример является упрощением, в действительности API довольно обширный и включает в себя множество классов. Я действительно хочу избежать дублирования, если это возможно.