获取简单 RESTful Web 服务应用程序的错误页面

Getting error page for simple RESTful web service application

这可能是一个非常简单的问题,可能是重复的(虽然我到现在还没有找到),但不知何故我被困住了,需要尽快解决它。

基本上,我正在尝试使用 JAX-RS API 制作一个简单的 RESTful Web 服务。不知何故,我不能这样做。这是我第一次接触 Web 服务,我很确定我犯了一个愚蠢的错误,但经过大量谷歌搜索后我未能解决它。

所以,这是我的项目结构 -

MessageResource.java

package com.rest.jersey.messenger.resource;

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

@Path("/messages")
public class MessageResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getMessage() {
        return "Hello World";
    }
}

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" 
         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>messenger</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  <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.rest.jersey.messenger.resource</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey_REST_Service</servlet-name>
    <url-pattern>/webapi/*</url-pattern>
  </servlet-mapping>
</web-app>

URL我打的是:http://localhost:8090/messenger/webapi/messages

结果: 我收到错误页面 -

HTTP Status 404 - /messenger/webapi/messages

type Status report
message /messenger/webapi/messages
description The requested resource is not available.

注意:我没有使用 maven。我想手动设置项目。而且,我正在使用端口 8090 而不是 8080。

[编辑]

我在启动 Tomcat 服务器时低于警告:

WARNING: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Messenger' did not find a matching property.

我试过以下解决方案。还是一样的错误。

Double click on your tomcat server. 
It will open the server configuration. 
Under server options check ‘Publish module contents to separate XML files’ checkbox

问题是你的Context root。 试试这个 url 而不是

http://localhost:8090/Messenger/webapi/messages

基本上,您的上下文根就是您的 Web 应用程序的名称。在这种情况下,它是 Messenger 而不是 messenger。所以解决方案:

  1. 您只需更改项目的名称即可。
  2. 要通过 web.xml 更改它,您必须遵循供应商特定的步骤。 Check more here
  3. 如果您想通过 eclipse 更改它,请检查此图片。 Check more here