簡體   English   中英

Web服務錯誤HTTP狀態404-找不到

[英]Web service error HTTP Status 404 - Not Found

我正在遵循一個簡單的Web服務教程,並且似乎無法與Java代碼進行交互。 我懷疑我的web.xml有錯誤,但是我不確定。 沒有明顯的錯誤,index.jsp是服務器,沒有任何問題。

因此,當我在服務器上運行它時,它將打開index.jsp,然后嘗試以下網址,但出現“ HTTP 404錯誤”

這是我所擁有的
導入了jersey libs的動態Web項目。 關於此的注釋-我找不到類錯誤,看到我必須使用Glassfish.org ...而不是com.sun,不知道為什么,但是可以。 在此處輸入圖片說明

我的web.xml如下。 沒有錯誤。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>RestApi</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <display-name>Rest Web Services App by me</display-name>
  <servlet>
    <servlet-name>exampleServlet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.rest.example</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>exampleServlet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>

我的java類如下。 沒有錯誤。

package com.rest.example;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;

@Path("/hello")
public class HelloWorld {
    @GET
    @Path("/{param}")
    public Response getMsg(@PathParam("param") String msg){
        String output = "Welcome to the world of Rest : "+msg;
        return Response.status(200).entity(output).build(); 
    }

}

您正在使用舊的Jersey 1.x屬性

com.sun.jersey.config.property.packages

對於Jersey 2.x,應該是

jersey.config.server.provider.packages

通常,您看到com.sun.jersey 任何內容都適用於Jersey 1.x,而org.glassfish.jersey內容適用於2.x。

嘗試:

HTTP://本地主機:8080 / REST / RESTAPI /你好

檢查我的情況

規則看起來像這樣:/ {url-pattern} / {project} / {path}

我用碼頭辦案

另一個例子

由於以下原因,可能會發生上述問題:

  1. 首先檢查在tomcat的webapps文件夾中部署的應用程序的名稱,無論它是否與您的url匹配,都給出404.但是在上述情況下,因為它顯示了歡迎頁面,所以這里就不用擔心了。
  2. 檢查web.xml中提到的url模式,因為它必須與您擊中的url中的相同。

<url-pattern>/rest/*</url-pattern>

  1. 第三件事要檢查的是在其余類中使用@Path注釋定義的路徑。
  2. 如果您使用@Paul Samsotha上面建議的球衣罐2.x,請檢查web.xml中的以下條目。
 <servlet> <servlet-name>Jersey RESTful Application</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.pizzeria</param-value> </init-param> </servlet> 
  1. 當服務器啟動時沒有任何錯誤,但應用程序上下文沒有,則可能會出現此錯誤。 您可以在日志中檢查它。有關更多信息,請參考此鏈接---> 404由於嚴重而導致的錯誤:上下文[/ example]由於先前的錯誤而啟動失敗

暫無
暫無

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

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