0

大家好,我用 jersey 实现了一个RESTful Web 服务的教程

我的项目设置如下:

文件夹结构:

  • 宁静的
    • 网络信息
      • 类\com\mcnz\ws
        • HelloWorldResource.java
        • HelloWorldResource.class
        • 一些库(jersey 1.6 存档)
      • web.xml

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
  <web-app
    xmlns="http://java.sun.com/xml/ns/javaee" version="3.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <servlet>
       <servlet-name>RestfulContainer</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.mcnz.ws</param-value>
       </init-param>
           <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
       <servlet-name>RestfulContainer</servlet-name>
       <url-pattern>/resources/*</url-pattern>
    </servlet-mapping>
</web-app>

HelloWorldResource.java

package com.mcnz.ws;
import javax.ws.rs.*;
@Path("helloworld")
public class HelloWorldResource {
    @GET
    @Produces("text/plain")
    public String getMessage() {
        return "Rest Never Sleeps";
    }
}

我建立了战争,一切似乎都在运行,但是在部署到 tomcat 7 之后,url

http://localhost:8080/restful/resources/helloworld 

不回应

这是我的 .war

4

3 回答 3

1

我认为你的项目结构是一团糟。为什么你的REST资源在WEB-INF文件夹中?你应该把它们放在src/main/java. 对于您的第一个 REST 项目,我建议您遵循本教程。再次查看您的文件夹结构,我建议使用Maven进行依赖管理。您可以在此处找到一些教程。

于 2013-03-24T07:18:41.790 回答
0

最近我在 Liferay 中成功实现了 Jersey RESTful WEB 服务。

你可以找到它...

泽西岛实施

于 2013-05-23T10:52:52.373 回答
0

你有一个类级别的路径,尝试把它放在方法级别(在@GET语句之后)
你也可以在@GET之后留下第一个和另一个

这是我的一个样本

@Path("/user/")
public class UserResource {

    // Method for Registering a User, receives and replies a JSON
    @POST
    @Path("/register")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public StatusResult register(UserRegistrationRequest urr) {
        //Calls the controller to register the producer, and returns result
        StatusResult result = UserController.register(urr);
        return result;
    }

在这种情况下,您可以这样称呼它 localhost:8080/restful/resources/user/register

于 2013-03-23T10:11:25.090 回答