@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
.
Назад | Вперёд | Содержание |