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

mbd*_*dev 5 java rest jersey

在内部ContainerResponseFilter我想得到"处理程序",即类@Path@GET/ @PUT-annotated方法匹配我将提供的URL.

例:

someJerseyVariable.getHandlerForURI(request.getRequestUri()); 
Run Code Online (Sandbox Code Playgroud)

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

我想要这个的原因是,要统计每个处理程序服务的请求数以及成功/失败的数量.还欢迎任何其他替代方案.

Pav*_*cek 8

你可以注射UriInfoExtendedUriInfo.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;
    }
}
Run Code Online (Sandbox Code Playgroud)