Java Tomcat giving中的基本运动衫休息WS“;“资源不可用”;

Java Tomcat giving中的基本运动衫休息WS“;“资源不可用”;,java,web-services,rest,tomcat,jersey-2.0,Java,Web Services,Rest,Tomcat,Jersey 2.0,我正试图用eclipse/Tomcat/Jersey实现一个简单的Rest-WS,但我无法让它工作。这是令人沮丧的,因为我没有看到错误,但似乎真的很微妙 这是my web.xml的内容: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://java.sun.com/xml/ns/javaee

我正试图用eclipse/Tomcat/Jersey实现一个简单的Rest-WS,但我无法让它工作。这是令人沮丧的,因为我没有看到错误,但似乎真的很微妙

这是my web.xml的内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://java.sun.com/xml/ns/javaee" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>LearnWS</display-name>
  <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>com.example</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>

学习者
泽西岛休息服务
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
com.example
1.
泽西岛休息服务
/休息/*
这是Hello.java:

package com.example;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/hello")
public class Hello {

      // This method is called if TEXT_PLAIN is request
      @GET
      @Produces(MediaType.TEXT_PLAIN)
      public String sayPlainTextHello() {
        return "Hello Jersey";
      }

      // This method is called if XML is request
      @GET
      @Produces(MediaType.TEXT_XML)
      public String sayXMLHello() {
        return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>";
      }

      @GET
      @Produces(MediaType.TEXT_HTML)
      public String sayHtmlHello() {
        return "<html> " + "<title>" + "Hello Jersey" + "</title>"
            + "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> ";
      }
}
package.com.example;
导入javax.ws.rs.GET;
导入javax.ws.rs.Path;
导入javax.ws.rs.products;
导入javax.ws.rs.core.MediaType;
@路径(“/hello”)
公共课你好{
//如果请求文本,则调用此方法
@得到
@生成(MediaType.TEXT\u PLAIN)
公共字符串sayplantextHello(){
返回“Hello Jersey”;
}
//如果请求XML,则调用此方法
@得到
@生成(MediaType.TEXT\u XML)
公共字符串sayXMLHello(){
返回“+”Hello Jersey“+”;
}
@得到
@生成(MediaType.TEXT\u HTML)
公共字符串sayHtmlHello(){
返回“+”+“Hello Jersey”+“
+“+”你好,泽西衫“+”+“+”;
}
}
正如你所见,这是典型的hello世界。但对我来说,这是行不通的

我导出.war文件,部署到Tomcat web apps目录,打开管理器(这里是“学习”),但是当我尝试
http://localhost:8080/Learn/rest/hello
我只看到请求的资源不可用错误。在图片中,你看不到它,但该项目被称为学习

在catalina.out中,部署没有错误


我正在使用JavaSE6(构建时使用1.6.0_65-b14-462)和Tomcat7.0.54(JVM1.8.0_05-b13)。也许这就是问题所在,但我不知道。

我认为您正在使用jersey 2.x。让您的web.xml如下所示:

    <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.example</param-value>
    </init-param>
</servlet>

泽西岛休息服务
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
com.example
Jersey 2.x指的是org.glassfish。你的URL应该是“localhost:8080/Your_App_name/rest/hello”

谢谢, JK