我正在尝试使用 JSON 构建一个简单的基于 java 的 REST Web 服务。我也在使用 Maven 进行依赖管理。
因为我是新手,所以我一直在http://www.mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/上完全遵循一个不错的 5 步教程,但是我没有不要让这个简单的例子运行。
Maven 运行良好,所有必要的依赖项都已下载并集成到项目中(库包含在部署的 .war 文件中)。唯一的问题是,当我想在部署项目后打开教程中给出的 URL (localhost:8080/RESTfulExample/rest/json/metallica/get) 时,我会收到 404 错误而没有任何其他信息。
编辑:
这是我的 pom.xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.8</version>
</dependency>
</dependencies>
<build>
<finalName>RESTfulExample</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
正如我所说,构建运行良好,依赖项已加载并集成到项目中。
现在,这是我的 web.xml Restful Web Application 的内容
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.mkyong.rest</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
接下来,我使用 JSON-Service 类和模型类 Track。我的 JSON 服务如下所示:
@Path("/json/metallica")
public class JSONService {
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public Track getTrackInJSON() {
Track track = new Track();
track.setTitle("Enter Sandman");
track.setSinger("Metallica");
return track;
}
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response createTrackInJSON(Track track) {
String result = "Track saved : " + track;
return Response.status(201).entity(result).build();
}
}
我不确定如何检查服务器端异常,对此的任何提示也很感激...... :-)