无法启动REST风格的Web服务
我一直在学习REST风格的Web服务,因此我正在关注this tutorial。此外,我已经实现了该教程中给出的示例代码,但是当我通过Postman运行它时,出现404 Not Found
错误。我在Postman中的请求URL是http://localhost:8080/UserManagement/rest/UserService/users
和GET
。因此,请告诉我的代码中可能存在什么问题?无法启动REST风格的Web服务
Request和Response:
项目目录:
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>
你确定你的根应用上下文是/UserManagement? 默认情况下,对于tomcat Web服务器 - 根应用程序上下文等于Web工件的名称。因此,请确保您的UserManagement.war已复制到'tomcat_distribution_folder'\ webapps
我已经在本地检查过 - 您的web.xml描述符已正确配置。 由于你正在得到HTTP 404错误 - 是说你的Web服务器与应用程序已启动并运行。
你能尝试调用端点空根上下文:http://localhost:8080/rest/UserService/users
或检查你的web服务器和使用必要的根上下文的配置部署的应用程序。
从教程中,它使用**/UserManagement **访问URL,请查看此图片([link](https://www.tutorialspoint.com/restful/images/restful_postman.jpg)) 。 – LHCHIN
每个教程: “要使用eclipse创建一个WAR文件,请按照文件→导出→Web→War File选项,最后选择项目UserManagement和目标文件夹。要在Tomcat中部署war文件,请将UserManagement.war放置在Tomcat安装目录→webapps目录并启动Tomcat。“ **您是否已将UserManagement.war复制到
您是否检查过防火墙? –