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

Java &引用;“请求的资源不可用”;在Tomcat中部署Jersey应用程序时,java,jersey,Java,Jersey,我正在尝试构建一个简单的Restful api,它返回用户详细信息 我已参考链接 以下是我的课程: 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.SyncSc

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

我已参考链接

以下是我的课程:

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

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(); 
       }  
}
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;
     }
}
package com.demoapp;
导入java.util.List;
公共类UserUtil{
公共静态字符串mysql\u ip=“jdbc:mysql://10.119.32.86/";
公共静态字符串元数据_database=“haas”;
公共静态字符串mysql\u username=“root”;
公共静态字符串mysql_password=“”;
公共静态列表getUserList(){
列表用户=新建ArrayList();
用户=新用户();
user.setName(“abc”);
user.setU_name(“ab_c”);
user.setPassword(“1234”);
user.setUser_类型(“正常”);
user.setEmail(“abc@gmail.com");
用户。添加(用户);
返回用户;
}
}
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>

用户API
index.html
index.htm
index.jsp
Jersey RESTful应用程序
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
com.demoapp
Jersey RESTful应用程序
/休息/*
我从站点下载了jersey jar,提取了3个文件夹,并在构建路径中添加了这些jar

我已经按照教程做了所有的事情。 仍然显示此错误:


您能建议一种解决此问题的方法吗?

如果服务器已启动并正在运行,并且应用程序已正确部署,则您的端点应位于以下URL中:

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

  • [context]
    是WAR文件的名称(不带
    .WAR
    扩展名)
  • /rest
    来自
    web.xml
    /rest/*
  • /AddUserApi
    来自
    AddUserApi
    类上的
    @Path
    注释
  • /users
    来自
    getUsers()
    方法上的
    @Path
    注释

您的URL应该是:localhost:8082/UserAPI/rest/AddUserApi/users

我正在服务器上运行项目,方法是单击“以服务器方式运行…”那么您的意思是我必须创建war并将其部署到服务器上,然后使用链接吗?@satishsilveri不,您不需要手动创建war文件,因为您的IDE正在为您创建war文件(实际上,您的应用程序很可能部署为一个分解的WAR文件夹,但这并不重要)。对于动态web项目,大多数IDE使用项目名称作为
[context]
默认情况下。Mazzochi Molin,所以我只从IDE运行,我假设它应该自动创建此链接本地主机:8082/UserAPI/rest/AddUserApi/users…如果我错了,请更正我。@satishsilveri我不知道创建此链接…自动是什么意思。但是如果服务器在
8082
端口上运行,则如果应用程序在
UserAPI
上下文中部署时没有错误,您应该能够执行
GET
请求
http://localhost:8082/UserAPI/rest/AddUserApi/users
并获得所需的输出。您从哪里获得端口
8082
和上下文
UserAPI
?您确定打开的端口是8082吗而不是8080?