2016-12-07 73 views
0

這是我第一次嘗試使用RESTfull應用程序。我已經閱讀了許多與我的問題相同的頁面,但他們並沒有打出沉默。RESTfull Jersey應用程序,請求的資源不可用

這是我的服務。

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

我的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>Restful Web Service</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

我使用澤西2.17和Tomcat 7.0。它看起來像所有的.jar被正確添加到/WEB-INF/lib。我將我的項目導出爲.war文件,並將其放入/Tomcat/webapps目錄中。 然後我試圖發動

http://localhost:8080/RestV1/rest/UserService

我收到此錯誤:

HTTP Status 404 - /RestV1/rest/UserService/users The requested resource is not available.

的methodes從教程所以不應該有任何問題與他們。另外我的Tomcat錯誤日誌是空的。 任何想法有什麼不對?

+0

匹配是RestV1.war你產生戰爭的名字嗎? – gregbert

+0

是的,先生,和項目的名稱。 – LucasPG

+0

我想你只需要在中匹配servlet名稱。我會測試它並寫出它 – gregbert

回答

0

您需要使用您在<servlet-mapping>中定義的<servlet>中相同的<servlet-name>。因此,與servlet定義:

<servlet> 
    <servlet-name>Jersey RESTful Application</servlet-name> 
    ... 
</servlet> 

你的映射應該是這樣的:

<servlet-mapping> 
    <!-- this will not map properly 
    <servlet-name>Restful Web Service</servlet-name> 
    --> 
    <servlet-name>Jersey RESTful Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

我下載Tomcat和確保我拿到了404時的名稱不匹配,並且請求到達時的servelt他們做到了。

作爲參考,搜索servlet的映射,並注意經常使用的名稱在這些examples

+0

不幸的是它沒有幫助 – LucasPG

+0

你清除了Tomcat中的所有緩存嗎?我不得不刪除以前部署過程中爆炸的文件夾。 – gregbert

+0

緩存清除沒有幫助現在我得到了不同的錯誤。 「HTTP狀態500 - servlet Jersey RESTful應用程序的Servlet.init()拋出異常」,服務器遇到內部錯誤,導致它無法完成此請求。 – LucasPG