在tomcat中部署Spring引导应用程序

时间:2015-03-20 06:46:24

标签: java spring spring-boot

在tomcat中部署Spring Boot应用程序。它已使用webservletinitializer正确加载。

但加载后显示异常。

Mar 20, 2015 11:28:31 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Tomcat
Mar 20, 2015 11:28:31 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.57
Mar 20, 2015 11:28:31 AM org.apache.catalina.loader.WebappLoader startInternal
SEVERE: LifecycleException 
java.lang.ClassNotFoundException: org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedWebappClassLoader
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:191)
        at org.apache.catalina.loader.WebappLoader.createClassLoader(WebappLoader.java:721)
        at org.apache.catalina.loader.WebappLoader.startInternal(WebappLoader.java:582)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5357)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
        at 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)

Mar 20, 2015 11:28:31 AM org.apache.catalina.core.ContainerBase startInternal
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:188)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:816)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
        at 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)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        ... 6 more

当我在tomcat中部署应用程序时。它正在加载两个webApplicationInitializer。

Mar 20, 2015 11:28:20 AM org.apache.catalina.core.ApplicationContext log
INFO: Spring WebApplicationInitializers detected on classpath: [org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration@17f6f610, com.cpp.ServletInitializer@5694a0ba]
Mar 20, 2015 11:28:24 AM org.apache.catalina.core.ApplicationContext log
  1. 由于两个webApplicationInitializer而发生异常,或者如果不是那么可能是什么原因以及如何解决它。
  2. 为什么有两个webapplicationInitializers。它的影响是什么?
  3. 提前感谢!!

1 个答案:

答案 0 :(得分:5)

有一个名为application.properties的文件。我们需要保持management.port属性在那里注释或保持值与tomcat的post相同。

如果management.port值不等于tomcat端口。然后它尝试用给定的端口运行另一个tomcat。这就是例外背后的原因。