2017-08-02 141 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

相關問題