Jersey 1.11在tomcat 7上部署有问题,换到tomcat 6后问题消失

环境:

JDK 6

Jersey 1.11

Tomcat 7

参考《使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务》,一步步做了一个最简单的Jersey restful servive,但打成war包部署到tomcat 7后,发现war包不能被解压缩,后台的日志报错:

ERROR [[/SPIL]] StandardWrapper.Throwable: com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
at com.sun.jersey.server.impl.application.RootResourceUriRules.(RootResourceUriRules.java:99) [:1.11]
at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1298) [:1.11]
at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:169) [:1.11]
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:775) [:1.11]

at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:771) [:1.11]

Google了一下,有人遇到了同样的问题

但我试着把tomcat 7 换成tomcat 6后,问题消失,jersey能正常工作了!

 

我的web.xml

    1. <?xml version=“1.0” encoding=“ISO-8859-1”?>   
    1.   
    1. <web-appxmlns=“http://java.sun.com/xml/ns/javaee”xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”  
    1.      xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”  
    1.      version=“2.5”>   
    1.   
    1.      <description>Jersey Demo</description>   
    1.      <display-name>Jersey Demo</display-name>   
    1.   
    1.      <!– Define servlets that are included in the example application –>   
    1.   
    1.      <servlet>   
    1.          <servlet-name>Jersey REST Service</servlet-name>   
    1.          <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>   
    1.          <init-param>   
    1.             <param-name>com.sun.jersey.config.property.packages</param-name>   
    1.              <param-value>com.test.restful</param-value>   
    1.          </init-param>   
    1.          <load-on-startup>1</load-on-startup>   
    1.      </servlet>   
    1.   
    1.      <servlet-mapping>   
    1.          <servlet-name>Jersey REST Service</servlet-name>   
    1.          <url-pattern>/rest/*</url-pattern>   
    1.      </servlet-mapping>   
    1.   
  1. </web-app>  

Java代码:

    1. package com.test.restful;   
    1.   
    1. importjavax.ws.rs.GET;   
    1. import javax.ws.rs.Path;   
    1. import javax.ws.rs.Produces;   
    1. importjavax.ws.rs.core.MediaType;   
    1.   
    1. @Path(“/hello”)   
    1. publicclassHelloResource   
    1. {   
    1.     @GET  
    1.     @Produces(MediaType.TEXT_PLAIN)   
    1.     publicStringsayHello()   
    1.     {   
    1.         return“Hello Jersey”;   
    1.     }   
  1. }  

发表评论

电子邮件地址不会被公开。 必填项已用*标注