2013-02-27 51 views
0

我明白這已在許多帖子中得到解答,但我無法找到正確的解決方案。e ResourceConfig實例不包含任何根資源類

我沒有在類級別提供@Path,而是在方法級別(因爲它擴展了我的URI),因爲這樣我得到的ResourceConfig實例不包含任何根資源類。在部署例外

public class PatientResource { 
@GET 
@Path("/patient/{patientId}") 
@Produces(MediaType.APPLICATION_JSON) 
public Patient getPatientDetails(@PathParam("patientId") String patientId) { 
     ... 
    } 

網站XML條目是

<servlet> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.clinic.resources</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 

所以,當我嘗試SERV-名稱:8080/WAR-ID/REST /人/ 1,我得到上面的異常。請注意,如果我在類級別添加@Path,則可以排除異常,但它不必要地擴展了URL,並且在web xml中給/ *也不適用於項目。底線 - 是否有必要在一流水平給予@Path

感謝

回答

0

假設你有一個Patient資源,你通常放置

@Path("/patient") 

的類,然後一個

@Path("{patientId}") 

上的方法。

+0

這是一個很好的方法。然而,我沒有其他方法,比如getAllPatients,在這種情況下,像「patient/all」這樣的uri看起來不太好。 – niteen22 2013-02-28 09:12:37

+0

獲得所有患者的傳統REST式方法是使用URL /患者(並且完全是傳統的,您通常會使用複數作爲根資源,因此要獲得所有患者的使用/患者,以訪問患者3的使用/患者/ 3)。如果你這樣做,那麼你的類有一個'@Path(「/ patients」)'註釋,你的'getAll()'沒有路徑註釋,你的'getPatient()'有'@Path(「{patientId}」 )'註釋。 – jgm 2013-02-28 10:01:10

相關問題