使用restful web service jersey进行404例外处理

时间:2012-08-03 04:54:23

标签: netbeans jersey http-status-code-404 restful-architecture

我刚刚在我的mac上安装了netbeans(os x lion),我正在尝试使用jersey创建一个安静的Web服务。

当我去我的localhost时:8080 / HelloWorld / test / printHello我得到了404例外...所以我想我会查看我的web.xml ..但是我找不到该文件。

我应该看哪些指针以及我应该做什么?我的java类发布在下面。

@Path("/test")
public class helloworld {

    @GET
    @Path("printHello")
    @Produces("text/plain")
    public String printHello() {
        return "Hello there!";
    }
}

2 个答案:

答案 0 :(得分:4)

根据servlet 3.0规范,web.xml是可选的。

但是,在Netbeans / Eclipse中创建Web项目时,我们将获得一个部署描述符的选项。如果没有选项,我们可以显式创建web.xml。是的,我们需要一个web.xml来使用Jersey来执行restful Web服务,因为它的API暴露了ServletContainer,它负责基于URL的类映射。

希望这有帮助!

答案 1 :(得分:1)

在Netbeans中,web.xml位于

WAR-Project with Maven
    - Web Pages
        - WEB-INF
            - web.xml

在文件夹结构中,它位于:

WAR-Project with Maven
    - src
        - main
            - webapp
                - WEB-INF
                    - web.xml

您可以在那里定义Jersey Servlet:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 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">
<!-- Jersey -->
    <servlet>
        <servlet-name>Jersey Web Application</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>package.path.to.your.rest.service;</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

现在,您可以在以下URL访问REST服务:

localhost:8080/HelloWorld/rest/test/printHello