Jersey e ResourceConfig实例不包含任何根资源类

Jersey e ResourceConfig实例不包含任何根资源类,jersey,tomcat7,jax-rs,Jersey,Tomcat7,Jax Rs,我知道很多帖子都回答了这个问题,但我无法找到正确的解决方案 我不是在类级别给出@Path,而是在方法级别给出@Path(因为它扩展了我的URI),因为我得到的ResourceConfig实例不包含任何根资源类。部署异常 public class PatientResource { @GET @Path("/patient/{patientId}") @Produces(MediaType.APPLICATION_JSON) public Patient getPatientDetails(@Pa

我知道很多帖子都回答了这个问题,但我无法找到正确的解决方案

我不是在类级别给出@Path,而是在方法级别给出@Path(因为它扩展了我的URI),因为我得到的ResourceConfig实例不包含任何根资源类。部署异常

public class PatientResource {
@GET
@Path("/patient/{patientId}")
@Produces(MediaType.APPLICATION_JSON)
public Patient getPatientDetails(@PathParam("patientId") String patientId) {
      ...
    }
Web 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>

泽西塞尔维特酒店
com.sun.jersey.spi.spring.container.servlet.SpringServlet
com.sun.jersey.config.property.packages
com.clinic.resources
com.sun.jersey.api.json.POJOMappingFeature
真的
1.
泽西塞尔维特酒店
/休息/*
所以当我尝试servname:8080/warid/rest/patient/1时,我得到了上述异常。注意,若我在类级别添加@Path,我可以消除异常,但它不必要地扩展了URL,而且在web xml中提供/*对于项目来说是不可行的。底线-是否有必要在类级别给出@Path


谢谢

鉴于您有一位患者资源,您通常会放置一个

@Path("/patient")
在课堂上,然后

@Path("{patientId}")

这是一个很好的方法。然而,我有一些其他的方法,比如getAllPatients,在这种情况下,像“patient/all”这样的uri看起来不太好。获取所有患者的传统RESTful方法是使用URL/patient(完全传统的做法是,您通常会使用复数形式作为根资源,以便获取所有患者使用/patients,访问患者3使用/patients/3)。如果这样做,则您的类有一个
@Path(“/patients”)
注释,您的
getAll()
没有路径注释,而您的
getPatient()
有一个
@Path({patientId}”)
注释。