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

标签 java rest tomcat jersey

我正在 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。 Jersey 特定的 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>

关于java - Jersey 在 Servlet 3.0/Tomcat 7.0 上运行的简单 REST 服务未运行但 http 状态为 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15031351/

相关文章:

java - Spring Boot JPA 应用程序无法从 Spring Boot 2.0.2 启动,但可以在 Spring Boot 1.5.13 中正常运行

python - 访问 Flask-Restful 资源中的 API 记录器

java - 我们可以在 Spring WS 中使用多个消息工厂吗?

java - 如何知道文本转语音是否正在进行?

javascript - Ext JS 6.2 中的 BufferedStore 和 BufferedRenderer 插件有什么区别

linux - 外面无法连接Tomcat9

java - 我们必须将 .class 文件放在 Tomcat 目录中的位置

tomcat - Reslet 与 GWT 和 Tomcat 错误

java - 将 JCEKS keystore 加载到 Vert.x

c - 用于 Web 路由的 C 语言高效字符串解析