我正在尝试指定一个仅与我的某些 API 调用关联的预匹配过滤器,方法如下:RESTeasy 文档建议。我的代码如下所示:
姓名绑定:
@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
}
}
Filter:
@ValidateFoo
@Provider
@PreMatching
public class FooValidation implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext reqContext) throws IOException {
//validate stuff
}
}
问题是:FooValidation 过滤器在之前运行every方法调用(例如:在 GET 和 POST 到 /foo/bar 之前),不仅是那些带有注释的方法调用@ValidateFoo
(对我来说似乎是一个错误)。如果我删除@Provider
来自过滤器的注释,它不会在任何调用之前运行(如预期)。
无论是使用 WebLogic 还是 Tomcat,我都始终看到这种行为。我的依赖管理是通过Maven完成的,RESTeasy版本是3.0-beta-3。
有人经历过/经历过同样的行为吗?我看到另一个用户也有类似的问题JBoss 论坛,到目前为止还没有运气。
更新:
RESTeasy 3.0.1-Final 仍然遇到同样的问题。
我有类似的问题。对我来说,解决方案是添加以下注释配置(到@ValidateFoo):
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(value = RetentionPolicy.RUNTIME)
@NameBinding
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)