簡體   English   中英

REST Web服務返回404錯誤

[英]Rest Web Service returning 404 Error

我正在嘗試學習簡單的寧靜Web服務。 因此,我查找了一個示例,並逐步進行了跟蹤,但是在嘗試部署項目時遇到了錯誤404。 知道為什么嗎?

文件: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" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
        id="WebApp_ID" version="3.0">
      <display-name>UserManagement</display-name>
      <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.tutorialspoint</param-value>
             </init-param>
          </servlet>
       <servlet-mapping>
       <servlet-name>Jersey RESTful Application</servlet-name>
          <url-pattern>/rest/*</url-pattern>
       </servlet-mapping>  
    </web-app>

文件:User.java:

    package com.tutorialspoint;

    import java.io.Serializable;

    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlRootElement;

    @XmlRootElement(name = "user")
    public class User implements Serializable {

        private static final long serialVersionUID = 1L;
        private int id;
        private String name;
        private String profession;

        public User(){}

        public User (int id, String name, String profession){
            this.id = id;
            this.name = name;
            this.profession = profession;
        }

        public int getID(){
            return id;
        }

        @XmlElement
        public void setId (int id){
            this.id = id;
        }

        public String getName(){
            return name;
        }

        @XmlElement
        public void setName(String name){
            this.name = name;
        }

        public String getProfession(){
            return profession;
        }

        @XmlElement
        public void setProfession(String profession){
            this.profession = profession;
        }
    }

檔案:UserDao.java

package com.tutorialspoint;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

public class UserDao {

    @SuppressWarnings("unchecked")
    public List<User> getAllUsers(){
        List<User> userList = null;
        try {
            File file = new File("Users.dat");
            if (!file.exists()) {
                User user = new User(1, "Mahesh", "Developer");
                userList = new ArrayList<User>();
                userList.add(user);
                saveUserList(userList);
            }
            else {
                FileInputStream fis = new FileInputStream(file);
                ObjectInputStream ois = new ObjectInputStream(fis);
                userList = (List<User>) ois.readObject();
                ois.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e){
            e.printStackTrace();
        }
        return userList;
    }

    private void saveUserList(List<User> userList) {
        // TODO Auto-generated method stub
        try {
            File file = new File ("User.dat");

            FileOutputStream fos = new FileOutputStream (file);
            ObjectOutputStream oos = new ObjectOutputStream (fos);
            oos.writeObject(userList);
            oos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

文件:UserService.java

package com.tutorialspoint;

import java.util.List;

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

@Path("/UserService")
public class UserService {

    UserDao userDao = new UserDao();

    @GET
    @Path("/users")
    @Produces(MediaType.APPLICATION_XML)
    public List<User> getUsers() {
        return userDao.getAllUsers();
    }
}

這是我回來的錯誤404屏幕截圖

除了您的應用程序甚至沒有部署的可能性(也是404):

您配置休息服務以回答的路徑是

<Your application context>/rest/UserService/users

<Your application context>似乎是/UserManagement

  • /rest是在jersey servlet映射中的web.xml中配置的
  • /UserService@Path批注的UserService.java文件中配置
  • /users是在方法的@Path注釋的UserService.java文件中配置的。 這應該是@Path("users")

屏幕快照顯示您正在調用/UserManagement ,這可能是您的應用程序的上下文,但不是您的服務的路徑。

您可以更改web.xml文件。 webxml文件存在一些問題。 使用此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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>User Management</display-name>
  <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.tutorialspoint</param-value>
       </init-param>
   </servlet>
  <servlet-mapping>
 <servlet-name>Jersey RESTful Application</servlet-name>
  <url-pattern>/rest/*</url-pattern>
</servlet-mapping>  
</web-app>

暫無
暫無

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

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