RESTful прокси-класс веб-сервиса - PullRequest
0 голосов
/ 12 февраля 2012

Я написал клиентское приложение на Джерси, которое взаимодействует с двумя веб-сервисами: один - 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. Предполагая, что на Джерси можно настроить автоматическое создание и представление определения схемы и что изменения в Employee изменят определение схемы, должен ли объект Employee реализовать интерфейс для предотвращения несанкционированных изменений?

1 Ответ

0 голосов
/ 31 мая 2012

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

...