2012-10-10 106 views
1

還有其他人問這個問題,但他們得到的答案不適合我。我跑澤西其餘服務器在本link在Tomcat中7討論我的資源類您好,如下圖所示:Restful Web Service返回404,錯誤的web.xml?

package com.rest.videos; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@Path("/hello") 
public class Hello { 
// This method is called if TEXT_PLAIN is request 
    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String sayPlainTextHello() { 
    return "Hello Jersey"; 
    } 

    // This method is called if XML is request 
    @GET 
    @Produces(MediaType.TEXT_XML) 
    public String sayXMLHello() { 
    return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>"; 
    } 

    // This method is called if HTML is request 
    @GET 
    @Produces(MediaType.TEXT_HTML) 
    public String sayHtmlHello() { 
    return "<html> " + "<title>" + "Hello Jersey" + "</title>" 
     + "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> "; 
    } 

} 

我的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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 
    <display-name>Videos</display-name> 
    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 
    <servlet> 
     <servlet-name>ServletAdaptor</servlet-name> 
     <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>com.rest.videos</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>ServletAdaptor</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

每當我訪問了URL http://localhost:8080/Videos/rest/hello,它返回了404。我在我的WEB-INF目錄中有一個index.html文件,如果我去http://localhost:8080/Videos/那裏,我認爲它應該是因爲welcome-file-list這麼說的,所以我也得到了404 。

我在做什麼w榮?

+1

在哪裏/視頻前綴配置? EAR是w/a 的WAR部分嗎? – TheArchitect

+0

所以我的錯在於應用程序的上下文根是/ Rest,因此使用的正確URL是'localhost:8080/Rest/rest/hello'。 web-xml中的'display-name'屬性與此無關。 –

回答

1

好了,除非你的戰爭被包裹成一個EAR我會發佈一個答案,然後如果你不介意給學分:)

web.xml中沒有URI路徑上的軸承,W/A /視頻,這個前綴是無效的,可能是你的404的根源。

0

根據您提到的tutorial,看來你應該嘗試以下方法:
http://localhost:8080/com.rest.videos/rest/hello

通知客戶端代碼使用的是基礎URI?

private static URI getBaseURI() { 
    return UriBuilder.fromUri("http://localhost:8080/de.vogella.jersey.first").build(); 
} 
  • com.rest.videos指包名
  • /休息是指在servlet-mappingweb.xml
  • /你好指@Path註釋
+0

一種。我打電話給我的Project Rest,而不是教程中給出的packaage的名稱。當您在eclipse中創建動態Web項目時,它會將應用程序的上下文根設置爲/ app-name-of-the-app。因此,tutoriaal中的uri不會引用web.xml中的任何映射,而是引用應用程序的上下文根。無論您選擇爲項目資源提供的包名稱還是類名,這都可以工作。 –