2013-01-14 30 views
0

我想創建一個hello world restful(jersey)webservice。我正在使用Spring工具套件和本地vFabric tcServer。STS tcServer - Restful web服務配置

URL如下:/本地主機:8080 /例子/ REST /你好這給404

我已確保所有的罐子都存在於IDE的WEB-INF/lib文件夾。

我讀過各種論壇,提到所有的jar應該出現在WEB-INF目錄中。我已經通過了關於同一主題的各種SO問題,但我仍然無法解決導致此錯誤的原因。

我是否需要專門導航到工作區中的tcServer安裝以添加這些罐子?有任何想法嗎?

我堅持以下錯誤,當我開始的tcServer:

Jan 13, 2013 7:19:23 PM org.apache.catalina.core.ApplicationContext log 

INFO: Marking servlet jersey as unavailable 
Jan 13, 2013 7:19:23 PM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet threw load() exception 
java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514) 
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136) 

以下是web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <display-name>example</display-name> 
    <servlet> 
    <servlet-name>jersey</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.example.service</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>jersey</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

和相應的Web服務類:

package com.example.service; 

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 HelloWorldService { 

    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String sayHello() { 
     return "whats up"; 
    } 

    @GET 
    @Produces(MediaType.TEXT_XML) 
    public String sayHelloXmlVersion() { 
     return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>"; 
    } 

    @GET 
    @Produces(MediaType.TEXT_HTML) 
    public String sayHelloHTMLVersion() { 
     return "<html> " + "<title>" + "Hello Jersey" + "</title>" 
       + "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> "; 
    } 
} 

名單項目中的所有jar文件:

asm-3.1.jar 
jackson-core-asl-1.9.2.jar 
jackson-jaxrs-1.9.2.jar 
jackson-mapper-asl-1.9.2.jar 
jackson-xc-1.9.2.jar 
jersey-client-1.16.jar 
jersey-core-1.16.jar 
jersey-json-1.16.jar 
jersey-server-1.16.jar 
jersey-servlet-1.16.jar 
jettison-1.1.jar 
jsr311-api-1.1.1.jar 
jsr311-api-1.1.1-javadoc.jar 

回答

0

明白了。不得不提到的Web項目名稱在web.xml:

..... 
<display-name>SampleWebService</display-name> 
    ....... 

以及相應的網址:

/localhost:8080/SampleWebService/rest/hello