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

时间:2013-02-27 08:47:30

标签: jersey tomcat7 jax-rs

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

我没有在类级别提供@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>

所以当我尝试使用serv-name:8080 / WAR-Id / rest / patient / 1时,我得到了异常。请注意,如果我在类级别添加@Path,我可以摆脱异常,但它不必要地扩展了URL,而且在web xml中给出/ *对项目来说是不可行的。底线 - 是否有必要在班级提供@Path

由于

1 个答案:

答案 0 :(得分:0)

鉴于您拥有Patient资源,通常会放置

@Path("/patient")

在课堂上然后是

@Path("{patientId}")

关于方法。