gpt4 book ai didi

java - 通过 RESTeasy 上的 NameBinding 将过滤器与特定方法匹配

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:57:59 24 4
gpt4 key购买 nike

我正在尝试通过遵循 RESTeasy documentation 的内容来指定仅与我的一些 API 调用相关联的预匹配过滤器建议。这是我的代码的样子:

名称绑定(bind):

@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 仍然遇到同样的问题。

最佳答案

我遇到了类似的问题。对我来说,解决方案是添加以下注释配置(到@ValidateFoo):

@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(value = RetentionPolicy.RUNTIME)
@NameBinding

关于java - 通过 RESTeasy 上的 NameBinding 将过滤器与特定方法匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15119309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com