2012-08-22 24 views
0

当期的状态: 1.在我的web.xml:JAX-RS:服务资源为了

<servlet-mapping> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 

2.我有两个服务资源,具有相同的@Path

@Path("path") 
public class Resource1 { 
    //methods annotated with @Path 
} 

@Path("path") 
public class SubResource extends Resource1 { 
    //same methods annotated with @Path (are inherited, and not overridden) 
} 

问题。有没有办法将所有请求重定向到“路径”到SubResource和Resource1?在目前的情况下,似乎应用服务器(在我的情况下是JBoss)自己决定采取哪种资源,但并不总是相同的。

谢谢。

+0

这两个类上的@Path(“路径”)是否表示映射到相同的路径上? – dcernahoschi

+0

听起来像是一个建筑问题。 URI中的这两个资源之间必须有所区别。你至少应该想知道为什么你必须执行两次你的方法。 – sschrass

+0

@SatelliteSD,我解释错了:方法只是继承,没有任何重新实现。谢谢,我更正了问题/代码 – icvg

回答

0

我选择的解决方案是使用不同的@ Path's。子资源现在有更强的路径,具有更多的文字字符:

@Path("path") 
public class Resource1 { 
    //methods annotated with @Path 
} 

@Path("/path")//NOTE that the leading slash makes the difference 
public class SubResource extends Resource1 { 
    //same methods annotated with @Path (are inherited, not overridden) 
} 

更多关于JAX-RS​​的“选择算法”。

+0

“似乎”(不确定)这不是JAX-RS规范的一部分。 – icvg