繁体   English   中英

在Servlet 3.0 / Tomcat 7.0上运行的Jersey的简单REST服务未运行但http状态为500

[英]Simple REST service with Jersey running on Servlet 3.0 / Tomcat 7.0 not running but http status 500

我正在用Tomcat 7.0上的Jersey和Servlet 3.0实现测试一个非常简单的REST服务器。 我编写了一个简单的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。 球衣专用的jar(版本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

有人认识吗?

您需要告诉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>

添加jersey-servlet:1.17.jar为我解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM