从Jersey中的URI获取处理程序?

时间:2011-09-13 13:01:03

标签: java rest jersey

ContainerResponseFilter内部我想获得“处理程序”,即@Path@GET / @PUT - 带注释的方法匹配我的网址的类提供。

示例:

someJerseyVariable.getHandlerForURI(request.getRequestUri()); 

我找不到任何类似的方法。

我想要这个的原因是,要统计每个处理程序服务的请求数以及成功/失败的数量。任何其他选择也是受欢迎的。

1 个答案:

答案 0 :(得分:8)

您可以注入UriInfoExtendedUriInfoUriInfo仅包含最后匹配的类,ExtendedUriInfo甚至可以报告匹配的方法(以及更多信息,请参阅链接的javadoc)。

代码示例:

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;
    }
}