Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 匹配任何路径的资源_Java_Servlets_Guice_Jersey 1.0 - Fatal编程技术网

Java 匹配任何路径的资源

Java 匹配任何路径的资源,java,servlets,guice,jersey-1.0,Java,Servlets,Guice,Jersey 1.0,我正在使用和。 我试图做的是绑定一个与任何@Path匹配的Jersey资源,这样我就可以使用Jersey来响应404 我希望这样做,因为我的servlet由不同的组件组成,例如位于/API下的restapi和位于/下的webui。 在Guice术语中,这意味着我有几个servlet模块,每个模块设置servlet的一部分: 在我的ApiServletModule中:service/api.withGuiceContainer.class,conf 在我的WebUiServletModule中:s

我正在使用和。 我试图做的是绑定一个与任何@Path匹配的Jersey资源,这样我就可以使用Jersey来响应404

我希望这样做,因为我的servlet由不同的组件组成,例如位于/API下的restapi和位于/下的webui。 在Guice术语中,这意味着我有几个servlet模块,每个模块设置servlet的一部分:

在我的ApiServletModule中:service/api.withGuiceContainer.class,conf 在我的WebUiServletModule中:service/.withGuiceContainer.class,conf 在这个设置中,我想为webapp/api的每个部分或每个负责子项目的代码库定义404响应主体的外观,而无需重新实现


到目前为止,我已经尝试绑定一个与@Path/、@Path*和@Path/*匹配的资源,但是当我请求/some/Path/that/doesnt/exist时,这些资源似乎都没有被提取出来

@Path("{any: .*}")
如果需要的话,可以插入列表查看所有片段

public Response getSomething(@PathParam("any") List<PathSegment> segments)

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

@Path("{any: .*}")
如果需要的话,可以插入列表查看所有片段

public Response getSomething(@PathParam("any") List<PathSegment> segments)
的确实是正确的,因为它描述了如何创建与任何路径匹配的Jersey资源。 但是,我的目标是创建一个资源,在任何其他不匹配的路径被请求时提供404响应,但这个答案并没有完全实现:

至少在与Guice结合使用时,这种匹配所有资源将拦截所有请求,而不管是否有更多特定资源可用。此外,您不能从资源中修改HTTP响应状态代码

为此,Jersey有ExceptionMapper,可以通过添加@Provider注释来实现和加载。一种特殊类型是ExceptionMapper,当资源抛出NotFoundException时调用它。然后,ExceptionMapper可以决定生成什么响应,包括状态代码。

确实是正确的,因为它描述了如何创建与任何路径匹配的Jersey资源。 但是,我的目标是创建一个资源,在任何其他不匹配的路径被请求时提供404响应,但这个答案并没有完全实现:

至少在与Guice结合使用时,这种匹配所有资源将拦截所有请求,而不管是否有更多特定资源可用。此外,您不能从资源中修改HTTP响应状态代码

为此,Jersey有ExceptionMapper,可以通过添加@Provider注释来实现和加载。一种特殊类型是ExceptionMapper,当资源抛出NotFoundException时调用它。ExceptionMapper然后可以决定生成什么响应,包括状态代码