2017-08-02 121 views
2

我正在尝试构建一个简单的Restful API,它返回用户详细信息。在Tomcat中部署Jersey应用程序时,“请求的资源不可用”

我已经引用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类:

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

} 

utils的类:

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("[email protected]"); 

     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> 

我已经从网站上下载的球衣罐子,提取3个文件夹,并在构建路径中添加这些罐子。

我已经根据教程做了所有事情。 仍显示此错误:

error 请问您能否提出解决此问题的方法?

回答

2

提供的服务器启动并运行和部署应用程序没有错误,你的终点应该在以下网址获得:

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

其中:

  • [context]的名称是你的WAR文件(不包括.war扩展名)。
  • /rest来自web.xml<url-pattern>/rest/*</url-pattern>
  • /AddUserApi来自AddUserApi类的@Path注释。
  • /users来自@Path方法getUsers()方法的注释。
+0

我被点击上运行的服务器上运行该项目上的服务器....所以你的意思是我必须做战争并将其部署在服务器上,然后使用链接? –

+0

@satishsilveri不,你不需要手动创建一个WAR文件,因为你的IDE正在为你做这件事(实际上,你的应用程序很可能被部署为分解WAR文件夹,但没关系)。对于动态Web项目,大多数IDE默认使用项目名称作为'[context]'。 –

+0

Mazzochi Molin所以我做了只从IDE运行,我假设它应该创建此链接localhost:8082/UserAPI/rest/AddUserApi /用户自动...纠正我,如果我错了。 –

0

你的URL应该是:本地主机:8082/UserAPI/REST/AddUserApi /用户

+0

你从哪里得到端口'8082'和上下文'UserAPI'? –

+0

是的,我已经尝试过相同的链接仍然不工作 –

+0

你确定打开的端口是8082而不是8080吗? – pakkk

相关问题