Я написал приложение для клиентов из Джерси, которое взаимодействует с двумя веб-службами: REST, другое - SOAP. Я использую данные сотрудника, предоставленные службой REST, для создания нового пользователя с помощью службы SOAP.RESTful webservice proxy class
Служба REST является приложением JAX-RS (Jersey), который возвращает объект Employee:
@Entity
@Table(name = "EMPLOYEE_TABLE")
@XmlRootElement
public class Employee implements Serializable {
...
}
Я явно не создал определение схемы для класса сущностей.
Запрос GET возвращает представление объекта Employee:
GET /employees/100
<Employee id='100' providerId='3345'>
<Link type="application/xml" href="/employees/100" rel="self"/>
<Name>Doe, Dr. John</Name>
<Departments>
<Department id='10'><Name>Emergency Medicine</Name></Department>
<Department id='56'><Name>Behavioral Medicine</Name></Department>
</Departments>
</Employee>
SOAP-сервис (BusinessObjects Enterprise веб-сервисы SDK) обеспечивает клиента Java, чтобы упростить его использование.
Хотя я мог анализировать XML-представление сущности Employee и назначать его соответствующим сеттерам класса User, возможно, было бы проще создать класс прокси Employee (с соответствующими аннотациями) в клиентском приложении Jersey ,
Вопросы:
- Имеет ли JAX-RS (в частности, Джерси, в моем случае) есть механизм, чтобы разоблачить определение схемы хозяйствующего субъекта (формат XSD)? Документ WADL не включает этот тип информации.
- Хотя я мог бы вручную создать представление класса POJO, которое имитирует класс ресурсов Employee, я, вероятно, должен использовать «инструмент». Каковы мои варианты для этого?
- По прошествии времени мне может потребоваться добавить дополнительные элементы в объект Employee. Означает ли это, что необходимо создать новую версию служб RESTful?
- Предполагая, что Джерси может быть настроен так, чтобы автоматически генерировать и выставлять определение схемы, и что изменения в Employee будут изменять определение схемы, должен ли объект Employee реализовать интерфейс для предотвращения несанкционированных изменений?
Что касается пунктов 3 и 4: вам необходимо управлять URL-адресами API REST. Например, для начальной версии у вас будет URL '/ myservice/1.0.0/getlist'. –