在Tomcat中部署Jersey应用程序时,“请求的资源不可用”

时间:2017-08-02 13:53:35

标签: java jersey

我正在尝试构建一个简单的Restful api,它返回用户的详细信息。

我已提到this链接。

以下是我的课程:

API服务类:

package com.demoapp;

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;

import org.omg.Messaging.SyncScopeHelper;


@Path("/AddUserApi") 
public class AddUserApi {

     @GET 
       @Path("/users") 
       @Produces(MediaType.APPLICATION_XML) 
       public List<User> getUsers(){ 
          return UserUtil.getUserList(); 
       }  
}

Dao Class:

package com.demoapp;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "user") 
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    String name="";
    String u_name="";
    String password="";
    String email="";
    String user_type="";

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getU_name() {
        return u_name;
    }
    public void setU_name(String u_name) {
        this.u_name = u_name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getUser_type() {
        return user_type;
    }
    public void setUser_type(String user_type) {
        this.user_type = user_type;
    }

}

实用工具类:

package com.demoapp;

import java.util.List;

public class UserUtil {

    public static String mysql_ip="jdbc:mysql://10.119.32.86/";
    public static String metadata_database="haas";
    public static String mysql_username="root";
    public static String mysql_password="";

    public static List<User> getUserList(){
        List<User> users=new ArrayList<User>();

        User user=new User();
        user.setName("abc");
        user.setU_name("ab_c");
        user.setPassword("1234");
        user.setUser_type("normal");
        user.setEmail("abc@gmail.com");

        users.add(user);

        return users;
     }
}

的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>UserAPI</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

   <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.demoapp</param-value> 
      </init-param> 
   </servlet> 
   <servlet-mapping> 
      <servlet-name>Jersey RESTful Application</servlet-name> 
      <url-pattern>/rest/*</url-pattern> 
   </servlet-mapping>   
</web-app>

我从网站上下载了泽西jar并提取了3个文件夹,并在构建路径中添加了这些jar。

我根据教程做了一切。 仍显示此错误:

error 你能否提出解决这个问题的方法?

2 个答案:

答案 0 :(得分:2)

如果服务器已启动并正在运行,并且应用程序的部署没有错误,则应在以下URL中提供您的端点:

http://[host]:[port]/[context]/rest/AddUserApi/users

其中:

  • [context]是您的WAR文件的名称(没有.war扩展名)。
  • /rest来自web.xml<url-pattern>/rest/*</url-pattern>
  • /AddUserApi来自@Path课程的AddUserApi注释。
  • /users来自@Path方法的getUsers()注释。

答案 1 :(得分:0)

您的网址应为:localhost:8082 / UserAPI / rest / AddUserApi / users