Vic*_*ari 10 java rest tomcat jax-rs resteasy
我试图通过遵循RESTeasy文档建议的内容,指定仅与我的一些API调用相关联的预匹配过滤器.这是我的代码的样子:
名称绑定:
@NameBinding
public @interface ValidateFoo {}
Run Code Online (Sandbox Code Playgroud)
资源:
@Path("/foo/bar")
@Produces(MediaType.APPLICATION_JSON)
public class FooBar {
@GET
@ValidateFoo
public Object doStuff() {
//do stuff
}
@POST
public Object doAnotherStuff() {
//do another stuff
}
}
Run Code Online (Sandbox Code Playgroud)
过滤:
@ValidateFoo
@Provider
@PreMatching
public class FooValidation implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext reqContext) throws IOException {
//validate stuff
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:FooValidation过滤器在每次方法调用之前运行(例如:在GETs和POST之前到/ foo/bar),而不仅仅是那些注释的@ValidateFoo(对我来说似乎是个bug).如果我@Provider从过滤器中删除注释,它将不会在任何调用之前运行(如预期的那样).
我一直在使用WebLogic或Tomcat看到这种行为.我的依赖管理是通过Maven完成的,RESTeasy版本是3.0-beta-3.
任何体验/经历过同样行为的人?我见过另一个在JBoss论坛上遇到类似问题的用户,到目前为止没有运气.
更新:RESTeasy 3.0.1-Final仍然遇到同样的问题.
小智 8
我有类似的问题.对我来说,解决方案是添加以下注释配置(到@ValidateFoo):
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(value = RetentionPolicy.RUNTIME)
@NameBinding
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6470 次 |
| 最近记录: |