Я написал клиентское приложение на Джерси, которое взаимодействует с двумя веб-сервисами: один - REST, другой - SOAP. Я использую данные о сотрудниках, предоставленные службой REST, для создания нового пользователя со службой SOAP.
Служба REST - это приложение JAX-RS (Джерси), которое возвращает сущность 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 (SDK веб-сервисов BusinessObjects Enterprise) предоставляет клиент Java для упрощения его использования.
Хотя я мог бы проанализировать XML-представление сущности Employee и назначить его соответствующим установщикам класса User, вероятно, было бы проще создать прокси-класс Employee (с соответствующими аннотациями) в моем клиентском приложении на Джерси.
Вопросы:
- Имеется ли в JAX-RS (в частности, в Джерси, в моем случае) механизм для представления определения схемы объекта (в формате XSD)? Документ WADL не содержит информацию такого типа.
- Хотя я мог бы вручную создать представление класса POJO, которое имитирует класс ресурсов Employee, я, вероятно, должен использовать «инструмент». Какие у меня есть варианты для этого?
- Со временем мне может понадобиться добавить дополнительные элементы в сущность Employee. Означает ли это, что необходимо создать новую версию сервисов RESTful?
- Предполагая, что на Джерси можно настроить автоматическое создание и представление определения схемы и что изменения в Employee изменят определение схемы, должен ли объект Employee реализовать интерфейс для предотвращения несанкционированных изменений?