我正在尝试创建一个hello world restful(jersey)webservice。我正在使用Spring工具套件和本机vFabric tcServer。
以下是URL:/ localhost:8080 / example / rest / hello,它给出了404。
我已确保IDE中的WEB-INF/lib
文件夹中存在所有jar文件。
我通过各种论坛阅读,其中提到所有的jar应该出现在WEB-INF目录中。我在同一主题上经历了各种SO问题,但我仍无法解决此错误的原因。
我是否需要专门导航到工作区中的tcServer安装才能添加这些jar?有什么想法吗?
启动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>
和相应的webservice类:
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 :(得分:0)
搞定了。不得不在web.xml中引用web项目名称:
.....
<display-name>SampleWebService</display-name>
.......
以及相应的网址:
/localhost:8080/SampleWebService/rest/hello