web-services - 示例 REST 服务不适用于使用 Tomcat 的 Jersey

标签 web-services rest maven tomcat

我正在尝试在 Ubuntu 上使用 Eclipse 并使用 maven/jersey/tomcat 构建示例 REST web 服务。大部分设置都很顺利,服务已部署到服务器上。但是,在调用完整的上下文 URL 时,服务器出现以下错误

服务器 2 错误

javax.servlet.ServletException: Servlet.init() for servlet jersey-serlvet threw exception org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748) root cause

java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:79)

我的web.xml是

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
id="WebApp_ID" version="3.0">

  <!-- <display-name>Archetype Created Web Application</display-name> -->

    <display-name>Restful Web Application</display-name>

    <servlet>
        <servlet-name>jersey-serlvet</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.gpa.rest</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

我的pom.xml是

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.gpa.rest</groupId>
  <artifactId>SampleWebService</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>SampleWebService Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-bundle -->
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-bundle</artifactId>
        <version>1.17.1</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>SampleWebService</finalName>
  </build>
</project>

我的java类是

package com.gpa.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/hello")
public class HelloWorldService {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getMsg() {
        String output = "Hellow world from REST service ";
        return output;
    }
}

最佳答案

这很可能是由于缺少 jar asm.jar

添加以下依赖:

<dependency>
    <groupId>asm</groupId>
    <artifactId>asm</artifactId>
    <version>3.3.1</version>
</dependency>

关于web-services - 示例 REST 服务不适用于使用 Tomcat 的 Jersey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45268041/

相关文章:

asp.net - Web 服务需要一个 DataSet 对象,我如何通过 ColdFusion 或原始 XML 提供该对象?

web-services - 解释 : The underlying connection was closed: The connection was closed unexpectedly

web-services - 如何为仅通过 Mule ESB 的 HTTPS 公开的远程 WSDL 指定 SSL 证书详细信息?

java - 即使资源不应该存在也能得到响应

rest - 如何在 Node.js 中进行远程 REST 调用?任何 curl ?

firebase - 如何发出 firestore REST API PATCH 请求?

wcf - 无法远程访问 WCF 服务

maven-pmd-plugin 禁用一个模块

java - SmartGWT 无法与 Maven 和 Jetty Chrome Ubuntu x64 一起使用

java - 为 Spring MVC 和 Maven WebApplication 创建文件/图像文件夹目录