Как настроить сервер Restlet с JAXRS и JAXB?

Я искал по всему Интернету, пытаясь найти пример того, как это сделать. Я просто хочу настроить сервер REST, который автоматически сериализует объекты в XML и обратно. Я просто пытаюсь предоставить сервер, который может упростить вход пользователя в систему, выход из системы и доступ к XML-списку объектов только после того, как пользователь войдет в систему. Что требуется для запуска простого примера приложения?

Я не понимаю, как работает библиотека Restlet, и я совершенно новичок в использовании JAXB и JAXRS. Я работал над проектом, который использует эти библиотеки, но только с точки зрения клиента.


person Naftuli Kay    schedule 15.04.2011    source источник


Ответы (3)


Restlet можно рассматривать как реализацию JAXRS. Простое руководство доступно по адресу: http://wiki.restlet.org/docs_1.1/13-restlet/28-restlet/57-restlet.html

Вам нужно поместить следующие файлы jar в свой путь к классам. Эти файлы jar можно найти в дистрибутиве рестлета (например, версия 2.0.5):

  • javax.ws.rs.jar
  • org.restlet.ext.jaxrs.jar
  • org.restlet.jar

Как видно из руководства, вы реализуете свой ресурс и приложение JAXRS. Затем есть два разных способа запуска всего веб-приложения:

  • Использование встроенного Restlet-сервера
  • Использование веб-контейнера JavaEE

Чтобы интегрировать поддержку JAXB, вам сначала нужно понять, как работает поддержка представления Restlet. Содержимое запросов/ответов REST содержится в представлении. Поддерживаются различные форматы, и это открыто и расширяемо. Эту поддержку представления можно использовать с сущностями преобразователя и службой преобразователя.

Преобразователь отвечает за преобразование одного элемента в другой. Например, если вы передаете экземпляр Java и хотите преобразовать его в XML для отправки обратно в ответе REST. Служба конвертера отвечает за разумную обработку этого преобразования на основе типа мультимедиа и поддержки согласования контента (тип контента, определенный в заголовках Accept и Content-Type). Преобразователи автоматически регистрируются, если они присутствуют в пути к классам.

Для JAXB давайте поместим следующую банку в ваш путь к классам:

  • активация.jar
  • jaxb-api.jar
  • jsr173_1.0_api.jar

Итак, давайте возьмем пример:

  • Вы отправляете запрос REST в свое приложение Restlet JAXRS. Вы указываете заголовок Accept со значением application/xml, так как вы ожидаете XML-содержимое для содержимого ответа.

  • В вашем ресурсе соответствующий метод JAXRS для запроса и требуемый тип контента возвращает объект. Restlet автоматически проверит, есть ли зарегистрированный преобразователь для преобразования объекта Java в XML. Если вы добавили расширение Restlet JAXB, оно будет использовать его, если объект Java снабжен аннотациями JAXB.

  • Преобразователь JAXB будет использовать преобразователь для создания вывода XML с использованием JAXB.

  • Ответ отправляется обратно клиенту.

В противном случае, какую безопасность вы хотите реализовать? На основе пользователя/пароля?

Надеюсь понятно и будет полезно! Тьерри

person Thierry Templier    schedule 15.04.2011
comment
Спасибо, это определенно помогает. Теперь у меня есть полуфункциональное приложение! - person Naftuli Kay; 16.04.2011
comment
@Thierry, я пытаюсь сделать то же самое, я поместил все банки в путь к классам. Тем не менее конвертер делает мой объект нулевым. Я использую аннотацию XMLRootElement. Это аннотация JAXB или что-то еще, что я должен использовать. - person Nishant Modi; 07.01.2016

Вам может пригодиться следующий пример (из моего блога). В примере используется Jersey, а не Restlet, но, поскольку обе они являются реализациями JAX-RS, должны быть лишь небольшие различия.

person bdoughan    schedule 15.04.2011

Я не могу говорить с Рестлетом.

Java 6 поставляется с JAXB, поэтому для этого не нужно ничего устанавливать.

Glassfish v3.1 Web Profile поставляется с предустановленной программой Jersey. Таким образом, вы можете просто загрузить это и приступить к работе.

person Will Hartung    schedule 15.04.2011
comment
Прохладный. Что это значит? Я даже не знаю, что делают эти библиотеки. Я ни в коем случае не новичок в разработке Java, я просто новичок в этих библиотеках и в том, что они делают. Я запускаю этот сервер, встроенный в медиа-сервер Java, поэтому мне нужно, чтобы он был как можно более легким. - person Naftuli Kay; 15.04.2011
comment
JAXB — это среда Java XML Binding. Проще говоря, это упрощает преобразование XML в Java Beans. JAXRS — это платформа веб-служб Java для REST-подобных служб (в отличие от SOAP). Glassfish — это серверы приложений JEE. 3.1 последняя версия. Веб-профиль Glassfish — это новый профиль JEE, который в основном предлагает поднятый контейнер сервлетов, но не весь JEE. Jersey является эталонной реализацией JAXRS и входит в состав Glassfish 3.1. Итак, получив GF 3.1 на Java 6, вы должны получить JAXRS и JAXB. Если у вас есть среда IDE NetBeans, вы можете получить весь комплект и запустить его одним щелчком мыши. - person Will Hartung; 15.04.2011