簡體   English   中英

java(JAX-RS)中使用jersey的簡單RESTful Web服務,拋出HTTP狀態404

[英]simple RESTful web services in java(JAX-RS) using jersey , throws HTTP Status 404

當我運行用於RESTful Web服務(JAX-RS)的簡單Java代碼時,它將引發404錯誤。 我已經將其映射到web.xml中,並且沒有編譯錯誤。 我在日志中收到的一個可疑消息是“ INFO:未找到提供程序類。”,請建議我消除此問題。

控制台日志-:

May 31, 2014 10:23:27 AM org.apache.catalina.startup.HostConfig checkResources
INFO: Reloading context [/rest]
May 31, 2014 10:23:27 AM com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
  stk5
May 31, 2014 10:23:27 AM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
  class stk5.ConversionService
May 31, 2014 10:23:27 AM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
May 31, 2014 10:23:27 AM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.18 11/22/2013 01:21 AM'

我的ConversionService.java文件-:

package stk5;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("ConversionService")


public class ConversionService{
     @GET
     @Path("/InchToFeet/{i}")
      @Produces(MediaType.TEXT_XML)
      public String convertInchToFeet(@PathParam("i") int i) {

        int inch=i;
        double feet = 0;
        feet =(double) inch/12;

        return "<InchToFeetService>"
        + "<Inch>" + inch + "</Inch>"
          + "<Feet>" + feet + "</Feet>"
         + "</InchToFeetService>";
      }

      @Path("/FeetToInch/{f}")
      @GET
      @Produces(MediaType.TEXT_XML)
      public String convertFeetToInch(@PathParam("f") int f) {
       int inch=0;
          int feet = f;
          inch = 12*feet;

          return "<FeetToInchService>"
            + "<Feet>" + feet + "</Feet>"
            + "<Inch>" + inch + "</Inch>"
            + "</FeetToInchService>";
      }
}

我的Web.xml文件-:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>restApp</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>stk5</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-app> 

您要使用哪個URL進行測試? 上下文是/rest ,您的路徑是/InchToFeet/{i} ,那么您要去/rest/InchToFeet/<num>嗎?

編輯:我也注意到您在類上有一個@Path("ConversionService") 這將使您的URL /restConversionService/InchToFeet/<num> 您可能想在ConversionService之前加一個斜杠以使其成為/rest/ConversionService/InchToFeet/<num>

建議您不要在web.xml中提及URL模式,而web.xml其放在Service @Path

您應該這樣考慮上下文根,如果尚未設置,那么默認情況下它就是您的Deployment(war / ear / jar等)名稱。

因此,將您的<url-pattern>/rest/*</url-pattern><url-pattern>/*</url-pattern> 現在您的URL應該看起來像這樣http://localhost:8080/[context root]/ConversionService/InchToFeet/2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM