在本地,我通常会成功地将此战争部署到Wildfly,但是尝试使用Tomcat并获得错误。
在TravisCI我用Maven和OpenJDK7建立我的战争
language: java
jdk:
- openjdk7
script:
- mvn package
在目标/中创建以下内容
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类型
2016年6月20日02:12:30.827 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log没有在类路径上检测到Spring WebApplicationInitializer类型
2016年6月20日02:12:30.835严重[localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStart配置类org.jboss.resteasy.plugins.server.servlet的应用程序侦听器时出错。 ResteasyBootstrap java.lang.ClassNotFoundException:org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap 在org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332) 在org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:518) 在org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:499) 在org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118) 在org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4764) 在org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303) 在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 在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) 在org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:940) 在org.apache.catalina.startup.HostConfig $ DeployWar.run(HostConfig.java:1816) at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471) 在java.util.concurrent.FutureTask.run(FutureTask.java:262) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:745)
20-Jun-2016 02:12:30.867 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStart由于先前的错误而跳过安装的应用程序监听器
我读了一些类似警告的帖子,建议从JDK 1.8迁移到1.7,但我目前正在使用OpenJDK7(maven build)& JRE7(Tomcat码头工人)。我是否应该从目标/战争以外部署其他任何东西?
答案 0 :(得分:0)
您需要在可部署模块中安装WebInitializer,以便向Tomcat通知调度程序servlet配置。这应该是一个扩展WebApplicationInitializer接口的任何实现的类。
示例:
public class GatewayWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
// ...
}