У меня есть веб-приложение Java, которое использует Джерси для предоставления REST API.
@Path("/myRootResource")
public class resource
{
@GET
@Path("subResource_1")
public Response subResource_1() {return null;}
@GET
@Path("subResource_2")
public Response subResource_2() {return null;}
}
Я хочу запустить некоторый код для каждого подресурса в рамках определенного ресурса. Этот код обрабатывает задачи аутентификации, показатели производительности (например, время начала для расчета времени запроса), инициализацию и переменные отладки.
До сих пор весь код у меня был в функции (например, preTasks()
), которую я запускал в начале каждого метода субресурса. Мне нужно как-то автоматизировать это и заставить этот блок кода работать для каждого подресурса myRootResource
без необходимости копировать и вставлять вышеупомянутую функцию в каждый метод подресурса.
Можно ли это сделать с помощью фильтров или перехватчиков Джерси?
Хотя я не совсем знаком с Spring, я думаю, что то, чего я пытаюсь достичь, чем-то похоже на это: Веб-приложение Spring: выполнение общего кода перед входом в RequestMapping в контроллере
Обновление от 06.12.2015
Как указано в комментариях, «Перехватчики» — хороший способ. Но «Перехватчики» поддерживаются только из Джерси 2.X и выше. В моем коде я использую Джерси 1.18. Обновление до Jersey 2.X ломает часть моего кода, поэтому сейчас я стараюсь этого избегать.
Есть ли эквивалент «Перехватчикам» в Джерси 1.18, или мой единственный вариант — это обновление. Я думаю, что «Диспетчеры» могут приступить к работе, это правильно?
@Context
; простая пометка вашего метода @Before с помощью@Context
делает свое дело, если вы работаете в классе, которым управляет Джерси. - person RJStanford   schedule 10.05.2019