2010-11-06 190 views
4

考虑上述RestEasy的如何解决冲突@Path

@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”。

选择合适方法的策略是什么? 任何方式来获得有关不同资源的多条路径的信息?

回答

3

在评论

我不知道,在一系列注解服务类提供的重复匹配模式的列表内的RESTEasy任何报告工具的光进一步编辑。但是,你可以接近使用下列方法之一这个问题:

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

编辑,以更好地针对问题

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

+1

是的,我明白了,但考虑一个200类WS或使用二进制类库中的类。您必须手动控制@Path注释。编译器不会获取重复项。我很好奇规范说什么,但我找不到那个问题。 – PeterMmm 2010-11-06 09:35:21

+0

根据评论更新的答案 – 2010-11-06 09:59:11

+0

@PeterMmm你是如何得到解决这个问题的?如果您找到答案,将其发布给其他人以获益,将会非常有用。 – 2010-11-10 09:09:41