当前位置: 首页 > 知识库问答 >
问题:

泽西Web应用程序的Docker映像

孟杰
2023-03-14
FROM tomcat:8.0-jre8
ADD /my-web-app.war /usr/local/tomcat/webapps/
CMD ["catalina.sh", "run"]
docker build -t my-web-app .

之后,我通过以下内容开始图像:

winpty docker run --rm -it -p 8080:8080 my-web-app

命令提示符显示服务器已成功启动,当我试图访问web应用程序时,这也可以工作:

http://192.168.99.100:8080/my-web-app

显示适当的HTML欢迎页。

javax.servlet.ServletException: Servlet.init() for servlet My Web Application threw exception
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2527)
    org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2516)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:748)
root cause

java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
    org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:308)
    org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:337)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:178)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:370)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2527)
    org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2516)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:748)
<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>my.webapp.host</groupId>
    <artifactId>my-web-app</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>my-web-app</name>

    <build>
        <finalName>my-web-app</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <inherited>true</inherited>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <dependencyManagement>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>2.26-b03</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-moxy</artifactId>
            <version>2.26-b03</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-multipart</artifactId>
            <version>2.26-b03</version>
        </dependency>

        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>4.0.0-b05</version>
        </dependency>   

        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-json</artifactId>
            <version>1.19.3</version>
        </dependency>

        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.19.3</version>
        </dependency>

        <!-- persistence api -->
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.0-api</artifactId>
            <version>1.0.1.Final</version>
        </dependency>

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
            <version>2.6.4</version>
        </dependency>

        <!-- additional apis -->        
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

         <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>19.0</version>
        </dependency>

        <!-- own apis -->  
        <dependency>
            <groupId>my.own.utility.api</groupId>
            <artifactId>utility-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>

共有1个答案

宋新知
2023-03-14

这里是一个深入的概述和所有遇到NoSuchMethodError的人的解决方案,特别是在泽西上下文中。

问题是

java.lang.nosuchmethoderror:javax.ws.rs.core.application.getproperties()ljava/util/map;

    null
    null

但是getproperties()没有定义。https://jersey.github.io/apidocs/1.19.1/jersey/javax/ws/rs/core/application.html

解决方案

在pom.xml中定义了jersey 2.x和1.x版本。因此,在您的类路径中有javax.ws.rs.core.application的JEE6和7版本,而classloader加载的应用程序类的JEE6版本没有定义getproperties(),但是您的应用程序希望执行getproperties()。因此出现了错误。

 类似资料:
  • 我想问一个关于泽西岛申请的基本问题 是否可以在基本URL中添加和显示HTML内容?如果可能,我该如何实现它? 我用球衣2号。x应用。< br >通常,我扩展ResourceConfig来实现并设置ApplicationPath为“/api”。此外,我在测试类中将资源路径设置为“test ”,并用“GET”请求定义testResp()。< br >我使用maven构建service.war并部署在本

  • 问题内容: 我正在尝试将以下有效负载发布到基于泽西岛的Web服务中: 我的泽西岛代码: 就在Jersey打电话给我时,我停了下来,我看到 当面的 地址正好与我要查找的内容(上面的JSON中的内容)完全冲了出来。但是,我的数据元组不存在。我知道Jersey正在为 Address es 调用我的no- arg构造函数,并且它的setter也被调用了,但是我晚上仍无法解决Jersey可能会或可能不会尝试

  • 我设法将swagger核心添加到我的Web应用程序中,但我找不到将swagger用户界面添加到我的泽西jax-rs Web应用程序的解决方案。 除了这里:https://github.com/swagger-api/swagger-samples/blob/2.0/java/java-jersey2-webxml/pom.xml 有大量的Spring启动示例,但不适用于带有web.xml.的泽西j

  • 我是JavaWeb服务的新手,我正在努力解决一个基本问题。 在找到了一堆过时的示例后,我设法找到了一些使用XML的方法,但是当我要求它返回JSON时,相同的代码就不起作用了。 起初我认为它缺少JSON格式化程序,但JAXB应该负责从POJO到JSON的转换,所以我认为这不是问题所在。 Tomcat中引发的错误是: 网状物。XML Todo.java TodoResource。Java语言 你知道为

  • 问题内容: 在创建新的ASP.NET Core MVC应用程序时,特别是在React / Redux(或其他需要Node.js的)模板上使用什么正确的Docker映像?如果不是特定的映像,对于由ASP.NET Core MVC支持的Node.js应用程序,应该在Dockerfile中遵循什么命令或过程? 除了运行支持MVC站点外,我不需要框架的SDK版本。 运行时映像未安装Node.js,在尝试运

  • 我正在迁移一个遗留服务框架,该框架使用java序列化/反射来注册服务,并将它们作为远程endpoint(javabin over http)或本地调用无缝地调用。我已经将远程调用替换为jerseyendpoint。并使用基于hk2 aop的拦截器重新构建了现有框架的部分拦截能力。当远程客户端调用endpoint时,它工作正常。现在,我需要对服务方法的本地调用执行相同的操作,并且能够使用与远程服务方