【问题标题】:Get handler from URI in Jersey?从泽西岛的 URI 获取处理程序?
【发布时间】:2011-09-13 13:01:03
【问题描述】:

ContainerResponseFilter 中,我想获取“处理程序”,即@Path@GET/@PUT-annotated 方法与我将提供的URL 匹配的类。

例子:

someJerseyVariable.getHandlerForURI(request.getRequestUri()); 

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

我想要这个的原因是为了统计每个处理程序服务了多少请求以及有多少成功/失败。也欢迎任何其他替代方案。

【问题讨论】:

  • 那么您是如何计算出有多少成功/失败的?

标签: java rest jersey


【解决方案1】:

您可以注入UriInfoExtendedUriInfoUriInfo 仅包含最后匹配的类,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;
    }
}

【讨论】:

  • +1 请注意,ExtendedUriInfo 扩展了 UriInfo,因此实际上无需同时注入两者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 2012-06-04
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
  • 2013-03-24
相关资源
最近更新 更多