【发布时间】:2018-01-23 05:57:55
【问题描述】:
我已尝试解决上面提到的问题,但似乎找不到我遇到的问题。我正在尝试创建一个 RESTful Web 服务来获取一个简单的文本。我使用了一些来自互联网的代码并试图适应获得最简单的 Web 服务,但我失败了 >_
我知道我一定忘记了一些重要的事情,但我找不到它。因此,我很感谢您对这个问题的建议。
我的代码如下所示: pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>rest-xml</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>rest-xml-example</name>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.22.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.22.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.22.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
<version>2.22.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
<sourceDirectory>src/main/java</sourceDirectory>
<finalName>${project.artifactId}</finalName>
</build>
</project>
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_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>REST XML Example</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>test</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>REST XML Example</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Java 类 RESTfulHelloWorld.java
package ub;
import java.util.Date;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
@Path("/hello")
public class RESTfulHelloWorld {
@GET
@Produces("text/html")
public Response getStartingPage() {
String output = "<h1>Hello World!<h1>"
+ "<p>RESTful Service is running ... <br>Ping @ " + new Date().toString() + "</p<br>";
return Response.status(200).entity(output).build();
}
}
我的项目结构如下所示: Project structure
我的结果(无论我使用哪个 URI)是 HTTP 404 - /rest-xml。 webapps 的目录结构是这样的: webapps dir structure
有什么想法吗?非常感谢您的帮助。
最好的问候
【问题讨论】:
-
com.sun.jersey.config.property.packages应该是jersey.config.server.provider.packages。前者适用于 Jersey 1.x。任何使用com.sun.jersey的东西,你都会知道是1.x,它与2.x不兼容 -
哦,谢谢!一旦我更改了它,路径 localhost:8080/rest-xml/rest/hello 就会获取正确的结果!非常感谢,我快疯了。
标签: rest maven tomcat netbeans http-status-code-404