2012-02-12 6 views
0

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

Вопросы:

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

Что касается пунктов 3 и 4: вам необходимо управлять URL-адресами API REST. Например, для начальной версии у вас будет URL '/ myservice/1.0.0/getlist'. –

ответ

0

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

+0

Вам нужно было вручную генерировать файлы XSD? – craig

+1

Да. Но затем я использую плагин maven для генерации кода Java из XSD. Я понимаю, что вы тоже можете пойти в другую сторону. Вы можете написать свой Java-код, а затем сгенерировать XSD. Лично я никогда раньше этого не делал. – mark

+0

Я надеялся, что реализация (Джерси, в моем случае) сможет генерировать XSD динамически, с возможностью кэширования ее для лучшей производительности. – craig