匹配任何路径的Jersey资源

der*_*ink 1 java servlets guice jersey-1.0

我正在使用Jersey v1.xGuice Servlet.我想要做的是绑定一个匹配any 的Jersey资源@Path,这样我就可以使用Jersey来回复404.

我希望这样做,因为我的servlet由不同的组件组成(例如,生活在其中的休息API /api,以及生活在其下的Web UI /.在Guice术语中,这意味着我有几个ServletModules,每个都设置了一部分servlet的:

  • 在我的ApiServletModule:serve("/api").with(GuiceContainer.class, conf)
  • 在我的WebUiServletModule:serve("/").with(GuiceContainer.class, conf)

在这个设置中,我想从负责的每个子项目的代码库定义webapp(/api/)的每个部分的404响应主体的外观,而不必重新实现Jersey


到目前为止,我已经尝试绑定匹配的资源@Path("/"),@Path("*")@Path("/*"),但没有这些似乎当我要求被拾起/some/path/that/doesnt/exist

Pau*_*tha 7

您需要使用路径表达式的正则表达式格式,即

@Path("{any: .*}")
Run Code Online (Sandbox Code Playgroud)

List<PathSegment>如果需要,您可以注入以查看所有段.

public Response getSomething(@PathParam("any") List<PathSegment> segments)
Run Code Online (Sandbox Code Playgroud)