Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Примеры приложений для JAX-RS

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

Здесь рассматриваются следующие темы:

Создание простого RESTful веб-сервиса

В этом разделе объясняется, как использовать IDE NetBeans для создания RESTful веб-сервиса с использованием архетипа Maven. Архетип создаёт каркас для приложения, и вам остаётся только реализовать соответствующий метод.

Вы можете найти версию этого приложения в tut-install/examples/jaxrs/hello/.

Здесь рассматриваются следующие темы:

Создание RESTful веб-сервиса с IDE NetBeans

  1. Убедитесь, что вы установили архетипы, как описано в Установка архетипов учебника.

  2. В IDE NetBeans создайте веб-приложение, используя архетип Maven jaxrs-service-archetype. Этот архетип создаёт очень простое веб-приложение "Hello, World".

  3. В меню «Файл» выберите «Новый проект».

  4. В "Категориях" выберите Maven. В "Проектах" выберите «Проект из архетипа». Нажмите кнопку Далее.

  5. В поле Поиск введите jaxrs-service, выберите jaxrs-service-archetype и нажмите кнопку Далее.

  6. В поле «Имя проекта» введите HelloWorldApplication, задайте местоположение проекта и задайте для имени пакета значение javaeetutorial.hello и нажмите «Готово».

    Проект создан.

  7. В HelloWorld.java найдите метод getHtml(). Замените комментарий //TODO следующим текстом, чтобы в итоге получилось:

    @GET
    @Produces("text/html")
    public String getHtml() {
        return "<html lang=\"en\"><body><h1>Hello, World!!</body></h1></html>";
    }

    Замечание:

    Поскольку созданный тип MIME — это HTML, вы можете использовать теги HTML в выражении return.

  8. Кликните правой кнопкой мыши проект HelloWorldApplication на панели «Проекты» и выберите «Выполнить».

    Эта команда собирает и развёртывает приложение на сервере GlassFish.

  9. В браузере откройте следующий URL:

    http://localhost:8080/HelloWorldApplication/HelloWorldApplication

    Откроется окно браузера и отобразит возвращаемое значение Hello, World!!

Другие примеры приложений, демонстрирующие развёртывание и запуск приложений JAX-RS с использованием IDE NetBeans, см. в Приложение rsvp и Your First Cup: введение в платформу Java EE по ссылке http://docs.oracle.com/javaee/7/firstcup/doc/. Вы также можете посмотреть материалы на учебном сайте IDE NetBeans, например, озаглавленном «Начало работы с RESTful веб-сервисами», по ссылке https://netbeans.org/kb/docs/websvc/rest.html. В этом руководстве содержится раздел о создании приложения CRUD из базы данных. Создание, чтение, обновление и удаление (CRUD) — четыре основные операции для работы с реляционными базами данных.

Приложение rsvp

Пример приложения rsvp, расположенный в каталоге tut-install/examples/jaxrs/rsvp/, позволяет приглашённым на мероприятие указать, что приглашение принято. Мероприятия, приглашённые на них люди и ответы на приглашение сохраняются в Apache Derby с использованием API персистентности Java. Ресурсы JAX-RS в rsvp отображаются в сессионном Enterprise-бине без состояния.

Здесь рассматриваются следующие темы:

Компоненты приложения rsvp

В примере приложения rsvp присутствуют три Enterprise-бина: rsvp.ejb.ConfigBean, rsvp.ejb.StatusBean и rsvp.ejb.ResponseBean.

ConfigBean — это сессионный компонент-синглтон, который инициализирует данные в базе данных.

StatusBean предоставляет ресурс JAX-RS для отображения текущего статуса всех приглашённых на мероприятие. Шаблон пути URI объявляется сначала в классе, а затем в методе getEvent:

@Stateless
@Named
@Path("/status")
public class StatusBean {
    ...
    @GET
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    @Path("{eventId}/")
    public Event getEvent(@PathParam("eventId") Long eventId) {
         ...

Комбинация двух аннотаций @Path приводит к следующему шаблону пути URI:

@Path("/status/{eventId}/")

Переменная пути URI eventId — это переменная @PathParam в методе getEvent, которая отвечает на HTTP GET-запросы и снабжена аннотацией @GET. Переменная eventId используется для поиска всех текущих ответов в базе данных для конкретного мероприятия.

ResponseBean предоставляет ресурс JAX-RS для установки ответа приглашённого на конкретное мероприятие. Шаблон пути URI для ResponseBean объявлен следующим образом:

@Path("/{eventId}/{inviteId}")

В шаблоне пути объявлены две переменные пути URI: eventId и inviteId. Как и в StatusBean, eventId является уникальным идентификатором для конкретного мероприятия. Каждый приглашённый на это мероприятие имеет уникальный идентификатор для приглашения inviteId. Обе эти переменные пути используются в двух методах JAX-RS — в ResponseBean: getResponse и putResponse. Метод getResponse отвечает на HTTP GETзапросы и отображает текущий ответ приглашённого и форму для изменения ответа.

Класс javaeetutorial.rsvp.rest.RsvpApplication определяет путь к корневому приложению для ресурсов, применяя аннотацию javax.ws.rs.ApplicationPath на уровне класса.

@ApplicationPath("/webapi")
public class RsvpApplication extends Application {
}

Приглашённый, желающий изменить свой ответ, выбирает новый ответ и отправляет данные формы, которые обрабатываются как HTTP POST-запрос методом putResponse. Новый ответ извлекается из HTTP POST-запроса и сохраняется в виде строки userResponse. Метод putResponse использует userResponse, eventId и inviteId для изменения ответа приглашённого в базе данных.

Мероприятия, люди и ответы в rsvp инкапсулированы в сущности API персистентности Java. Объекты rsvp.entity.Event, rsvp.entity.Person и rsvp.entity.Response соответственно представляют мероприятия, приглашённых и их ответы.

Класс rsvp.util.ResponseEnum объявляет перечислимый тип, представляющий все возможные состояния ответа, которые может иметь приглашённый.

Веб-приложение также содержит два Managed-бина CDI: StatusManager и EventManager, которые используют клиентский API JAX-RS для вызова ресурсов, представленных в StatusBean и ResponseBean. Информацию об использовании клиентского API в rsvp см. в «Клиентский API в примере приложения rsvp».

Запуск приложения rsvp

И IDE NetBeans, и Maven можно использовать для развёртывания и запуска примера приложения rsvp.

Здесь рассматриваются следующие темы:

Запуск приложения rsvp в IDE NetBeans
  1. Если сервер базы данных ещё не запущен, запустите его, следуя инструкциям в Запуск и остановка Apache Derby.

  2. Удостоверьтесь, чтобы GlassFish Server был запущен (см. Запуск и остановка сервера GlassFish).

  3. В меню «Файл» выберите «Открыть проект».

  4. В диалоговом окне «Открыть проект» перейдите к:

    tut-install/examples/jaxrs
  5. Выберите каталог rsvp.

  6. Нажмите Открыть проект.

  7. На вкладке «Проекты» кликните правой кнопкой мыши проект rsvp и выберите «Выполнить».

    Проект будет скомпилирован, скомпонован и развёрнут на сервере GlassFish. Откроется окно веб-браузера по следующему URL:

    http://localhost:8080/rsvp/index.xhtml
  8. В окне веб-браузера нажмите на ссылку Статус мероприятия для Duke’s Birthday event.

    Вы увидите текущих приглашённых и их ответы.

  9. Кликните текущий ответ одного из приглашённых в столбце «Статус» таблицы, выберите новый ответ и нажмите «Обновить свой статус».

    Новый статус приглашённого теперь должен отображаться в таблице и их статусах ответов.

Запуск приложения rsvp с помощью Maven
  1. Если сервер базы данных ещё не запущен, запустите его, следуя инструкциям в Запуск и остановка Apache Derby.

  2. Удостоверьтесь, чтобы GlassFish Server был запущен (см. Запуск и остановка сервера GlassFish).

  3. В окне терминала перейдите в:

    tut-install/examples/jaxrs/rsvp/
  4. Введите следующую команду:

    mvn install

    Эта команда собирает, компонует и развёртывает rsvp на сервере GlassFish.

  5. Откройте окно веб-браузера по следующему URL:

    http://localhost:8080/rsvp/
  6. В окне веб-браузера нажмите на ссылку Статус мероприятия для Duke’s Birthday event.

    Вы увидите текущих приглашённых и их ответы.

  7. Кликните текущий ответ одного из приглашённых в столбце «Статус» таблицы, выберите новый ответ и нажмите «Обновить свой статус».

    Новый статус приглашённого теперь должен отображаться в таблице и их статусах ответов.

Примеры из реального мира

Большинство сайтов блогов используют веб-сервисы RESTful. Эти сайты включают загрузку файлов XML в формате RSS или Atom, которые содержат списки ссылок на другие ресурсы. Другие веб-сайты и веб-приложения, которые используют REST-подобные интерфейсы разработчика для данных, включают Twitter и Amazon S3 (Simple Storage Service). Список корзин и объектов Amazon S3, их создание и извлечение возможно с использованием HTTP-интерфейса в стиле REST или SOAP-интерфейса. Примеры, которые поставляются с Jersey, включают пример службы хранения с RESTful интерфейсом.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)