[英]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.