无法启动REST风格的Web服务

问题描述:

我一直在学习REST风格的Web服务,因此我正在关注this tutorial。此外,我已经实现了该教程中给出的示例代码,但是当我通过Postman运行它时,出现404 Not Found错误。我在Postman中的请求URL是http://localhost:8080/UserManagement/rest/UserService/usersGET。因此,请告诉我的代码中可能存在什么问题?无法启动REST风格的Web服务

Request和Response:

enter image description here

项目目录:

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 { 
    public List<User> getAllUsers(){ 

     List<User> userList = null; 
     try { 
     File file = new File("Users.dat"); 
     if (!file.exists()) { 
      User user = new User(1, "Mahesh", "Teacher"); 
      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){ 
     try { 
     File file = new File("Users.dat"); 
     FileOutputStream fos; 
     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

的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> 
+0

您是否检查过防火墙? –

你是如何运行你的应用A N +
对于Eclipse,请按照以下步骤启动应用程序。
右键点击你的项目 - >运行方式 - >服务器上运行
希望这有助于你〜

+0

我正在使用Postman软件运行它 - > https://www.getpostman.com/ – Agha

+0

嗨,我的意思是,你是如何运行** REST应用程序,而不是** TEST **它。在我看来,Postman是测试Web服务的工具。 – LHCHIN

+0

使用Tomcat apache – Agha

你确定你的根应用上下文是/UserManagement? 默认情况下,对于tomcat Web服务器 - 根应用程序上下文等于Web工件的名称。因此,请确保您的UserManagement.war已复制到'tomcat_distribution_folder'\ webapps

我已经在本地检查过 - 您的web.xml描述符已正确配置。 由于你正在得到HTTP 404错误 - 是说你的Web服务器与应用程序已启动并运行。

你能尝试调用端点空根上下文:http://localhost:8080/rest/UserService/users

或检查你的web服务器和使用必要的根上下文的配置部署的应用程序。

+0

从教程中,它使用**/UserManagement **访问URL,请查看此图片([link](https://www.tutorialspoint.com/restful/images/restful_postman.jpg)) 。 – LHCHIN

+0

每个教程: “要使用eclipse创建一个WAR文件,请按照文件→导出→Web→War File选项,最后选择项目UserManagement和目标文件夹。要在Tomcat中部署war文件,请将UserManagement.war放置在Tomcat安装目录→webapps目录并启动Tomcat。“ **您是否已将UserManagement.war复制到 \ webapps文件夹**? –