RESTful прокси-класс веб-сервиса

Я написал клиентское приложение на Джерси, которое взаимодействует с двумя веб-сервисами: один - 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 (с соответствующими аннотациями) в моем клиентском приложении на Джерси.

Вопросы:

  1. Есть ли в JAX-RS (в частности, в Джерси, в моем случае) механизм для представления определения схемы объекта (в формате XSD)? Документ WADL не включает этот тип информации.
  2. Хотя я мог бы вручную создать представление класса POJO, имитирующее класс ресурсов Employee, я, вероятно, должен использовать "инструмент". Какие у меня варианты для этого?
  3. Со временем мне может понадобиться добавить дополнительные элементы в сущность Employee. Означает ли это, что необходимо создать новую версию сервисов RESTful?
  4. Предполагая, что Джерси может быть настроен на автоматическое создание и представление определения схемы, и что изменения в "Сотруднике" изменят определение схемы, должен ли объект "Сотрудник" реализовать интерфейс для предотвращения несанкционированных изменений?

1 ответ

Что касается вопроса 1, если ваш XSD развернут в вашем веб-приложении, вы можете просто перейти к нему в браузере. Например, в моем веб-приложении у меня есть /xsd папка с моим XSD. Когда приложение работает, я могу указать свой браузер на http://localhost:8080/<app_name>/xsd/<xsd_name>.xsd и увидеть XSD.

Другие вопросы по тегам