【问题标题】:How RESTeasy solves @Path conflictRESTeasy 如何解决@Path 冲突
【发布时间】:2010-11-06 09:08:24
【问题描述】:

考虑上面的代码

@Path("a")
@Produces("text/plain")
public class A {

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

    @GET
    @Path("a")
    public String getB() {
        return "b";
    }
}

请求http://host/a/a 我总是得到“b”。

选择合适方法的策略是什么? 有什么方法可以了解不同资源的多条路径?

【问题讨论】:

    标签: java resteasy


    【解决方案1】:

    根据评论进一步编辑

    我不知道 RESTEasy 中有任何报告工具可以提供一系列带注释的服务类的重复匹配模式列表。但是,您可以使用以下方法之一解决此问题:

    1. grep 和 awk @Path 的源代码以生成可排序的路径表达式列表
    2. 作为单元测试的一部分,使用AnnotationReader implementation 扫描您的类路径,并让它检测重复的正则表达式模式。

    编辑以更好地定位问题

    RESTEasy 使用regex based system for paths 并选择最匹配的模式。如果发生冲突,则使用最后一个匹配的。

    【讨论】:

    • 是的,我明白这一点,但考虑 200 个类 WS 或使用二进制库中的类。您必须手动控制@Path 注释。编译器不会得到重复项。我很好奇规范说了什么,但我找不到那个问题。
    • 根据评论更新答案
    • @PeterMmm 你是如何解决这个问题的?如果您找到答案,请将其发布以供他人受益。
    猜你喜欢
    • 2012-01-09
    • 2016-02-22
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多