我正在测试一个非常简单的REST服务器,它在Tomcat 7.0上实现了Jersey和Servlet 3.0。我编写了一个简单的PoJo:
package toplevel;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("/pojo")
public class PoJo {
@GET
@Produces("text/plain")
public String hello() {
return "Hello, World";
}
}
我已将以下内容放在WEB-INF / web.xml文件中(在Servlet 3.0上运行):
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
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_3_0.xsd">
<display-name>RestTest</display-name>
<servlet>
<servlet-name>toplevel.PoJo</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>toplevel.PoJo</servlet-name>
<url-pattern>/pojo</url-pattern>
</servlet-mapping>
</web-app>
部署时,我收到HTTP Status 500响应。在我看来,网络服务器正在认识到应该从/ pojo提供某些东西,但找不到相应的类PoJo。特定于平针织物的罐子(版本1.17)在WEB-INF / lib目录中:
activation-1.1.1.jar jersey-client-1.17.jar junit-4.9.jar
asm-3.3.1.jar jersey-core-1.17.jar persistence-api-1.0.2.jar
jaxb-api-2.2.4.jar jersey-server-1.17.jar stax-api-1.0-2.jar
jaxb-impl-2.2.4-1.jar jsr311-api-1.1.1.jar
有人认识到这一点吗?
答案 0 :(得分:1)
您需要告诉Jersey在哪里可以找到您的REST资源。您的web.xml应如下所示:
<servlet>
<servlet-name>Service</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>toplevel</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
答案 1 :(得分:0)
添加jersey-servlet:1.17.jar为我解决了这个问题。