繁体   English   中英

在Tomcat 7中访问Jersey应用程序时出现404

[英]404 when accessing Jersey app in Tomcat 7

我是Web开发的新手,我正在努力使用jersey创建一个简单的rest Web服务,该球衣打包为独立的war文件,并部署在tomcat 7上。

我已按照本教程进行操作,以创建简单的Hello World Restful Web服务。 我使用intelij来创建war文件(war文件和它的分解版本)并将它们部署在tomcat \\ webapps文件夹中。

启动tomcat时,我无法访问URL( http://localhost:8080/rest/hello )-获取404。

查看tomcat的日志,除了下面的几行,我找不到任何异常或错误:

INFO: Scanning for root resource and provider classes in the packages:
  sample
εαΘ 30, 2013 11:24:38 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
  class sample.Hello
εαΘ 30, 2013 11:24:38 PM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.

我进行了很多搜索,并尝试遵循所有针对此错误的解决方案,但没有任何效果。

由于我的新生,我感到自己缺少一些非常基本的东西。 有什么想法要搜索吗? 我想念什么? 这是一个简单的hello world应用程序,我非常狂喜,感到沮丧...

Java类

package sample;

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 requested
  @GET
  @Produces(MediaType.TEXT_PLAIN)
  public String sayHelloInPlainText() {
    return "Hello world!";
  }

  // This method is called if HTML is requested
  @GET
  @Produces(MediaType.TEXT_HTML)
  public String sayHelloInHtml() {
    return "<html> " + "<title>" + "Hello world!" + "</title>"
        + "<body><h1>" + "Hello world!" + "</body></h1>" + "</html> ";
  }
}

web.xml

 <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">

      <display-name>rest</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>sample</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>

      <servlet-mapping>
        <servlet-name>Jersey REST Service</servlet-name>
        <url-pattern>/*</url-pattern>
      </servlet-mapping>

    </web-app>

类似于以下SO问题:“未找到提供程序类:运行Jersey REST示例应用程序时 ”。

消息“未找到提供程序类”很好,无需担心。 为了使URL http://localhost:8080/rest/hello起作用,您的WAR文件需要称为rest.war 然后, rest变为上下文根。 您在项目注释中定义的所有路径都相对于上下文root

如果您已经在eclipse中调用了项目:请休息,那么您应该得到正确的消息:“ Hello world!” 从tomcat的URL:

http://localhost:8080/rest/hello.

例如,如果您已经调用了您的项目:MyHello,则使用您发布的代码,正确的URL应该是:

http://localhost:8080/MyHello/hello

(原因是Eclipse默认情况下会创建一个战争,称为项目名称,并将其发布到您在配置中添加的tomcat服务器中)

让我知道

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM