用于非匹配JAX-RS请求的接收方法

时间:2017-02-05 23:38:58

标签: rest java-ee jax-rs

是否可以配置JAX-RS来调用某些方法来处理与任何其他资源方法不匹配的所有请求(因为例如不匹配的@Path)。

我天真的做法:

@Path("/")
public class RootResource {

    @GET
    @Path("foo")
    public String foo() {
        return "foo";
    }

    @GET
    @Path("{x: .*}")
    public String sink(@PathParam("x") String path) {
        return "Unknown path: " + path;
    }
}

可以打印警告:RESTEASY002142: Multiple resource methods match request "GET /foo". Selecting one. Matching methods: [public java.lang.String restresources.RootResource.sink(java.lang.String), public java.lang.String restresources.RootResource.foo()]

1 个答案:

答案 0 :(得分:1)

JAX-RS 2.0 Specification中的

§3.7.2请求匹配在将请求URI与处理程序匹配方面有很多话要说。

在几个地方它说:

  

...实现应该报告一个警告,并以依赖于实现的方式选择其中一种方法。

所以看起来你遇到了这种情况。

因此,您需要仔细阅读规范中的规则,了解如何指定所需的跌倒条件。