繁体   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