【发布时间】:2013-02-13 16:28:04
【问题描述】:
我正在尝试按照RESTeasy documentation 的建议指定一个仅与我的某些 API 调用相关联的预匹配过滤器。这是我的代码的样子:
名称绑定:
@NameBinding
public @interface ValidateFoo {}
资源:
@Path("/foo/bar")
@Produces(MediaType.APPLICATION_JSON)
public class FooBar {
@GET
@ValidateFoo
public Object doStuff() {
//do stuff
}
@POST
public Object doAnotherStuff() {
//do another stuff
}
}
过滤器:
@ValidateFoo
@Provider
@PreMatching
public class FooValidation implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext reqContext) throws IOException {
//validate stuff
}
}
问题是:FooValidation 过滤器在 每个 方法调用之前运行(例如:在 GET 和 POST 到 /foo/bar 之前),而不仅仅是那些用 @ValidateFoo 注释的过滤器(对我来说似乎是一个错误)。如果我从过滤器中删除 @Provider 注释,它将不会在任何调用之前运行(如预期的那样)。
我一直看到这种行为,无论是使用 WebLogic 还是使用 Tomcat。我的依赖管理是通过Maven完成的,RESTeasy版本是3.0-beta-3。
任何人都经历过/经历过相同的行为?我在JBoss forums 上看到另一位用户遇到类似问题,但目前没有运气。
更新: RESTeasy 3.0.1-Final 仍然遇到同样的问题。
【问题讨论】:
标签: java rest tomcat jax-rs resteasy