Получить обработчик из URI в Джерси? - PullRequest
5 голосов
/ 13 сентября 2011

Внутри ContainerResponseFilter я хотел бы получить «обработчик», то есть класс, где @GET и метод *1003* / @PUT соответствуют URL-адресу, который я предоставлю.Пример:

someJerseyVariable.getHandlerForURI(request.getRequestUri()); 

Я не могу найти подобный метод.

Причина, по которой я хочу этого, состоит в том, чтобы иметь статистику того, сколько запросов обслуживал каждый обработчик и сколько успешно / неудачно выполнено.Любые другие альтернативы также приветствуются.

1 Ответ

8 голосов
/ 15 сентября 2011

Вы можете ввести UriInfo или ExtendedUriInfo.UriInfo содержит только последний сопоставленный класс, ExtendedUriInfo может даже сообщить о сопоставленном методе (и многое другое, см. Связанные javadocs).

Пример кода:

public class Filter implements ContainerResponseFilter {
    @Context UriInfo uriInfo;
    @Context ExtendedUriInfo extendedUriInfo;

    @Override
    public ContainerResponse filter(ContainerRequest request, ContainerResponse response) {
        System.out.println(uriInfo.getMatchedResources().get(0).getClass());
        System.out.println(extendedUriInfo.getMatchedMethod().toString());
        return response;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...