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

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

Пример interceptor

Пример interceptor демонстрирует, как использовать класс Interceptor-а, содержащий метод @AroundInvoke, с сессионным компонентом без сохранения состояния.

Сессионный компонент HelloBean без сохранения состояния — это простой Enterprise-бин с двумя бизнес-методами, getName и setName, для извлечения и изменения строки. Бизнес-метод setName имеет аннотацию @Interceptors, которая задаёт класс Interceptor-а HelloInterceptor для этого метода:

@Interceptors(HelloInterceptor.class)
public void setName(String name) {
    this.name = name;
}

Класс HelloInterceptor определяет метод Interceptor-а @AroundInvoke, modifyGreeting, который преобразует строку, переданную в HelloBean.setName, к нижнему регистру:

@AroundInvoke
public Object modifyGreeting(InvocationContext ctx) throws Exception {
    Object[] parameters = ctx.getParameters();
    String param = (String) parameters[0];
    param = param.toLowerCase();
    parameters[0] = param;
    ctx.setParameters(parameters);
    try {
        return ctx.proceed();
    } catch (Exception e) {
        logger.warning("Error calling ctx.proceed in modifyGreeting()");
        return null;
    }
}

Параметры для HelloBean.setName извлекаются и сохраняются в массиве Object путём вызова метода InvocationContext.getParameters. Поскольку setName имеет только один параметр, он является первым и единственным элементом в массиве. Строка преобразуется в нижний регистр и сохраняется в массиве parameters, а затем передаётся в InvocationContext.setParameters. Чтобы вернуть управление сессионному компоненту, вызывается InvocationContext.proceed.

Пользовательский интерфейс interceptor — это веб-приложение JavaServer Faces, состоящее из двух представлений Facelets: index.xhtml, содержащем форму для ввода имени и response.xhtml, в котором отображается окончательное имя.

Запуск interceptor

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

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

Запуск interceptor с IDE NetBeans

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

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

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

    tut-install/examples/ejb
  4. Выберите каталог interceptor и нажмите «Открыть проект».

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

    Это скомпилирует, развернёт и запустит пример interceptor, открыв веб-браузер по следующему URL:

    http://localhost:8080/interceptor/
  6. Введите имя в форму и нажмите Отправить.

    Имя будет преобразовано в строчные буквы с помощью метода Interceptor-а, определённого в классе HelloInterceptor.

Запуск interceptor с помощью Maven

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

  2. Перейдите в следующий каталог:

    tut-install/examples/ejb/interceptor/
  3. Чтобы скомпилировать исходные файлы и упаковать приложение, используйте следующую команду:

    mvn install

    Эта команда собирает и упаковывает приложение в WAR-файл, interceptor.war, расположенный в каталоге target. WAR-файл затем развёртывается на сервере GlassFish.

  4. Откройте следующий URL в веб-браузере:

    http://localhost:8080/interceptor/
  5. Введите имя в форму и нажмите Отправить.

    Имя будет преобразовано в строчные буквы с помощью метода Interceptor-а, определённого в классе HelloInterceptor.


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