2012-10-10 79 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中的任何映射,而是引用应用程序的上下文根。无论您选择为项目资源提供的包名称还是类名,这都可以工作。 –