在本地,我通常会成功地将此战争部署到Wildfly,但是尝试使用Tomcat并获得错误 .
在TravisCI中,我正在用Maven和OpenJDK7 Build 我的战争
language: java
jdk:
- openjdk7
script:
- mvn package
这会在target / classes rules-1.0-SNAPSHOT surefire generated-sources rules-MODELS-1.0-SNAPSHOT.jar surefire-reports jacoco.exec rules.war test-classes maven-archiver site
中创建以下内容
然后我将目标/在Docker容器中的战争部署到Tomcat 8-JRE7 FROM tomcat:8 ADD target/rules.war /usr/local/tomcat/webapps/ CMD ["catalina.sh", "run"]
Tomcat启动,但在localhost.log中我看到org.apache.catalina.core.ApplicationContext.log没有在类路径上检测到Spring WebApplicationInitializer类型
20-Jun-2016 02:12:30.827 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log在类路径上检测不到Spring WebApplicationInitializer类型20-Jun-2016 02:12:30.835 SEVERE [localhost] -startStop-1] org.apache.catalina.core.StandardContext.listenerStart配置类org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap的应用程序监听器时出错java.lang.ClassNotFoundException:org.jboss.resteasy.plugins.server位于org.apache.catalina.core上的org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332)的.servlet.ResteasyBootstrap位于org.apache.catalina.core上的org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166) .defaultInstanceManager.loadClass(DefaultInstanceManager.java:518)位于org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:499)org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)at at org.apache.catalina.core.St org.apache.listenerStart(StandardContext.java:4764)org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)at org .apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)org.apache.catalina.core.StandardHost.addChild(StandardHost) .java:717)在java.util的org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:940)org.apache.catalina.startup.HostConfig $ DeployWar.run(HostConfig.java:1816) . concurrent.Executors $ runnableAdapter.call(Executors.java:471)java.util.concurrent.FutureTask.run(FutureTask.java:262)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java .util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run(Thread.java:745)20-Jun-2016 02:12:30.867 SEVERE [localhost-startStop-1] org.apac he.catalina.core.StandardContext.listenerStart由于先前的错误而跳过安装的应用程序侦听器
我读了一些类似警告的帖子,建议从JDK 1.8迁移到1.7,但我目前正在使用OpenJDK7(maven build)和JRE7(Tomcat docker) . 我是否应该从目标/战争以外部署其他任何东西?
1 回答
您需要在可部署模块中具有WebInitializer,以便向Tomcat通知调度程序servlet配置 . 这应该是一个扩展WebApplicationInitializer接口的任何实现的类 .
例: