【问题标题】:Java WebService on Tomcat with HTTP Status 404Tomcat 上的 Java WebService,HTTP 状态为 404
【发布时间】:2016-01-25 18:54:34
【问题描述】:

我正在关注这个tutorial 使用 Java 的 rest 服务。我到达了运行服务的步骤,但我总是得到HTTP Status 404。我搜索了我的问题,但似乎无法解决问题。

我正在使用此 URL http://localhost:8080/FirstWebService/rest/hello 调用服务。

下面是web.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>FirstWebService</display-name>
  <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>first.webservice</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>

Hello.java 在下面:

package first.webservice;

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

    @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</h1></body></html>";
    }
}

这可能是什么问题?

【问题讨论】:

  • 你打错了网址
  • 我叫这个http://localhost:8080/FirstWebService/rest/hello
  • 如果你偏离了教程,你应该知道你在做什么
  • 唯一的偏差是上下文根和包名
  • "display-name" 仅供参考:它不在网址中

标签: java web-services rest tomcat


【解决方案1】:

试试@Path("hello"),即不带斜线

【讨论】:

  • 做到了。我想知道为什么这是这个问题?在教程中我提到了/ 在那里
【解决方案2】:

当 Tomcat 无法找到所需的文件路径时导致的 HTTP 404。添加项目的目录结构如下:

$TOMCAT_HOME/webapps/Your-Project/(jsp 或 html 文件) $TOMCAT_HOME/webapps/Your-Project/WEB-INF/classes (你所有的java cleasses) $TOMCAT_HOME/webapps/Your-Project/WEB-INF/lib(这里所有的项目库) $TOMCAT_HOME/webapps/Your-Project/WEB-INF/web.xml(你的部署描述符)

要访问您的项目文件,您可以将其称为:(在您的情况下)
http://localhost:8080/rest/hello 因为您将类映射为 &lt;url-pattern&gt;/rest/*&lt;/url-pattern&gt; 在您的部署描述符 (web.xml) 中

干杯!!

【讨论】:

  • 问题是我的项目部署在wtpwebapps(默认部署路径)而不是webapps。应该是webapps
猜你喜欢
  • 2013-04-10
  • 2017-01-04
  • 2018-11-09
  • 2016-01-05
  • 1970-01-01
  • 2013-04-26
  • 2014-05-12
  • 1970-01-01
  • 2017-03-28
相关资源
最近更新 更多