访问 Restful Web 服务时出现 404 错误



我创建了一个简单的UserManagement restful Web服务。 我在其中创建了 3 个类。源代码如下。

用户类

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; 
}
}

用户道类

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(); 
} 
}    
}

用户服务类

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(); 
}  
}

网络.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>

然后我创造了它的战争并部署在雄猫中并启动了雄猫 但是当我通过点击网址访问这个 restfull 网络服务时http://localhost:8080/UserManagement/rest/UserService/users

使用邮递员会给出 404 错误。

请有人帮我解决这个问题。

尝试使用com.sun.jersey.spi.container.servlet.ServletContainer更改 servlet 类。

最新更新