这可能是一个非常简单的问题,可能是重复的(尽管到目前为止我还没有找到),但不知怎的,我已经陷入困境,需要尽快解决它。
基本上,我正在尝试使用JAX-RS API创建一个简单的RESTful 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>
我要点击的网址是: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
答案 0 :(得分:2)
问题在于你Context root
。
请尝试使用此网址
http://localhost:8090/Messenger/webapi/messages
基本上,您的上下文根是Web应用程序的名称。在这种情况下,它是Messenger
而不是messenger
。所以解决方案:
web.xml
进行更改,您必须遵循供应商特定的步骤。
Check more here eclipse
进行更改,请检查此图片。 Check more here