3

我正在尝试使用 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();

    }
}

我不确定如何检查服务器端异常,对此的任何提示也很感激...... :-)

4

1 回答 1

0

您在 servlet 映射中定义

<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

所以你的网址应该被正确调用localhost:8080/rest/json/metallica/get

于 2013-04-21T13:11:53.107 回答