使用jersey实现RESTful Web服务

时间:2013-03-23 09:37:02

标签: rest jersey

大家好我用jersey为RESTful Web服务实现了tutorial

我的项目设置如下:

文件夹结构:

  • 宁静
    • WEB-INF
      • 类\ COM \ mcnz \ WS
        • HelloWorldResource.java
        • HelloWorldResource.class
      • LIB
        • 一些libs(jersey 1.6 archive)
      • 的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后,网址

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

没有回复

我在这里 .war

3 个答案:

答案 0 :(得分:1)

我认为您的项目结构很混乱。为什么您的REST资源位于WEB-INF文件夹中?您应该将它们放在src/main/java中。我建议您参加第一个REST项目的this教程。再次查看您的文件夹结构,我建议使用Maven进行依赖关系管理。您可以找到一些教程here

答案 1 :(得分: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

答案 2 :(得分:0)

最近我在Liferay中成功实施了Jersey RESTful WEb服务..

你可以找到它......

Jersey Implementation