获取简单 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
。所以解决方案:
- 您只需更改项目的名称即可。
- 要通过
web.xml
更改它,您必须遵循供应商特定的步骤。
Check more here
- 如果您想通过
eclipse
更改它,请检查此图片。 Check more here
这可能是一个非常简单的问题,可能是重复的(虽然我到现在还没有找到),但不知何故我被困住了,需要尽快解决它。
基本上,我正在尝试使用 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
。所以解决方案:
- 您只需更改项目的名称即可。
- 要通过
web.xml
更改它,您必须遵循供应商特定的步骤。 Check more here - 如果您想通过
eclipse
更改它,请检查此图片。 Check more here