@Interceptors(HelloInterceptor.class)
public void setName(String name) {
this.name = name;
}
|
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
| Назад | Вперёд | Содержание |
Пример 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, в котором отображается окончательное имя.
Вы можете использовать IDE NetBeans или Maven для сборки, упаковки, развёртывания и запуска примера interceptor.
Здесь рассматриваются следующие темы:
Удостоверьтесь, чтобы GlassFish Server был запущен (см. Запуск и остановка сервера GlassFish).
В меню «Файл» выберите «Открыть проект».
В диалоговом окне «Открыть проект» перейдите к:
tut-install/examples/ejb
Выберите каталог interceptor и нажмите «Открыть проект».
На вкладке «Проекты» кликните правой кнопкой мыши проект interceptor и выберите «Выполнить».
Это скомпилирует, развернёт и запустит пример interceptor, открыв веб-браузер по следующему URL:
http://localhost:8080/interceptor/
Введите имя в форму и нажмите Отправить.
Имя будет преобразовано в строчные буквы с помощью метода Interceptor-а, определённого в классе HelloInterceptor.
Удостоверьтесь, чтобы GlassFish Server был запущен (см. Запуск и остановка сервера GlassFish).
Перейдите в следующий каталог:
tut-install/examples/ejb/interceptor/
Чтобы скомпилировать исходные файлы и упаковать приложение, используйте следующую команду:
mvn install
Эта команда собирает и упаковывает приложение в WAR-файл, interceptor.war, расположенный в каталоге target. WAR-файл затем развёртывается на сервере GlassFish.
Откройте следующий URL в веб-браузере:
http://localhost:8080/interceptor/
Введите имя в форму и нажмите Отправить.
Имя будет преобразовано в строчные буквы с помощью метода Interceptor-а, определённого в классе HelloInterceptor.
| Назад | Вперёд | Содержание |
Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены.
Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)