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>
这里是一个深入的概述和所有遇到NoSuchMethodError的人的解决方案,特别是在泽西上下文中。
问题是
java.lang.nosuchmethoderror:javax.ws.rs.core.application.getproperties()ljava/util/map;
但是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时,它工作正常。现在,我需要对服务方法的本地调用执行相同的操作,并且能够使用与远程服务方