【问题标题】:HTTP Status 404 - Servlet JAX-RS Servlet is not availableHTTP 状态 404 - Servlet JAX-RS Servlet 不可用
【发布时间】:2012-06-01 16:54:11
【问题描述】:

我尝试使用 Eclipse 创建 RESTful Web 服务,并按照

中提到的所有步骤进行操作

http://shrikantuw.blogspot.in/2012/03/jersy-developing-restful-web-service.html

但是当我尝试在tomcat中运行并点击

http://localhost:8080/RestFulWS/rest/exampleWithOutParam/getName

我来了

HTTP 状态 404 - Servlet JAX-RS Servlet 不可用

我的tomcat端口也是8080而已。

请告诉我该怎么做。

【问题讨论】:

  • 如果您直接通过本地主机服务器上的浏览器访问该页面会发生什么?你得到同样的错误吗?我的猜测是你的 servlet 没有放在正确的位置,所以你得到一个 404,例如“找不到页面”。
  • 使用@Path 注解再次检查您的 url 模式和代码中添加的资源路径。尝试转到localhost:8080/RestFulWS/rest/application.wadl Jersey 通常会自动创建一个描述所有资源的 WADL 文件,检查它们是否与您传递的路径匹配。
  • 为什么不把实际的 web.xml 内容和 web-service 代码放在这里?

标签: web-services rest tomcat jersey jax-rs


【解决方案1】:

如果您的 web.xml 和服务类映射如下,它应该可以正常工作:

你的网址:

http://localhost:8080/RestFulWS/rest/exampleWithOutParam/getName

web.xml:

<display-name>RestFulWS</display-name>
<servlet>
    <servlet-name>Jersey REST Service</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.yourapp</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

您的服务:

package com.yourapp;
// imports here
@Path("/exampleWithOutParam")
public class YourService {
     @GET
     @Path("/getName")
     @Produces("text/plain")
     public Response getName() {
        return Response.ok("OK").build();
     }
}

【讨论】:

    【解决方案2】:

    确保 jersey jar 确实是您的 Web 服务的一部分(也就是说,当部署在 tomcat 中时,它们位于 Web 服务包的 WEB-INF/lib 目录中)。

    【讨论】:

      【解决方案3】:
           <display-name>RestFulWS</display-name>
           <servlet>
             <servlet-name>Jersey REST Service</servlet-name>
          <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servletclass>
            <init-param>
              <param-name>com.sun.jersey.config.property.packages</param-name>
             <param-value>com.yourapp</param-value>
           </init-param>
             <load-on-startup>1</load-on-startup>
         </servlet>
           <servlet-mapping>
                <servlet-name>Jersey REST Service</servlet-name>
                <url-pattern>/rest/*</url-pattern>
            </servlet-mapping>
      

      你的 web.xml 文件应该是这样的。映射 servlet 类和你的根资源类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-15
        • 1970-01-01
        • 2012-06-16
        • 1970-01-01
        • 2015-10-09
        • 1970-01-01
        • 2021-07-27
        相关资源
        最近更新 更多