springboot使用外置tomcat报The required Server component failed to start so Tomcat is unable to start

使用外置tomcat部署打包成war包的springboot项目时,报如下错误

28-Jun-2018 18:20:54.110 SEVERE [main] org.apache.catalina.startup.Catalina.start The required Server component failed to start so Tomcat is unable to start.
 org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:158)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:655)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:158)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:791)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
    ... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:158)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
    ... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:921)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
    ... 11 more

解决方法:

在pom.xml里的以下依赖加上exclusions,原因:springboot内嵌tomcat,在使用外置的tomcat时,需要剔除本身自带的

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

MainApp继承SpringBootServletInitializer,实现如下代码:

public class MainApp extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(MainApp.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(MainApp.class, args);
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: org.apache.catalina.startup.catalina.startTomcat服务器启动时的一个类。它是Tomcat启动的入口点,负责加载和初始化Tomcat的各个组件,包括连接器、容器、Web应用程序等。 ### 回答2: org.apache.catalina.startup.catalina.start 是 Apache Tomcat Web 服务器的启动类。Apache Tomcat 是一个开源的、轻量级的、灵活的、用于Java Web开发的Web服务器。它是Java Servlet、JavaServer Pages、Java Expression Language和Java WebSocket的参考实现。该启动类是Tomcat服务器启动时的入口点。 当启动Tomcat服务器时,会首先执行该启动类中的main方法。在该方法中,会完成一系列的初始化操作,包括读取配文件、创建必要的组件、加载Web应用程序等。 在该启动类中,有许多重要的方法,如start方法、await方法等。start方法用于启动Tomcat服务器,其中会调用一系列的初始化方法,如createServer方法、initialize方法等。await方法用于阻塞当前线程,等待服务器停止命令的到来。 该类还包含一些静态私有方法,用于执行一些具体的启动过程细节,如configureStart方法用于配服务器的启动参数,createCatalina配方法用于创建Catalina对象等。 通过阅读org.apache.catalina.startup.catalina.start类的源码,可以更深入地了解Tomcat服务器的启动过程和相关的配细节。对于开发人员来说,了解这些细节可以帮助他们更好地理解和使用Tomcat服务器。 总之,org.apache.catalina.startup.catalina.startTomcat服务器的启动类,负责完成服务器的初始化和启动工作,对于研究和使用Tomcat服务器的开发人员来说,了解这个类的功能和作用非常重要。 ### 回答3: org.apache.catalina.startup.catalina.start是Apache Tomcat中的一个类。 Apache Tomcat是一个开源的Java Servlet容器,用于运行Java Servlet和JSP(JavaServer Pages)的Web应用程序。org.apache.catalina.startup.catalina.startTomcat的启动类之一,在Tomcat启动时调用。 该类的主要作用是初始化Tomcat服务器的配信息,创建服务器并对其进行配,最后启动服务器。它会加载Tomcat的配文件,包括server.xml、context.xml等,通过解析这些文件来获取服务器的配信息。 在启动过程中,org.apache.catalina.startup.catalina.start会初始化Tomcat的Connector,用于处理客户端的请求。它会根据配文件的设创建并配不同的Connector,例如HTTP和HTTPS Connector,用于监听不同的端口。 启动过程中,还会对Tomcat的各项服务和组件进行初始化和配,例如创建和配线程池、连接池、Session Manager等。该类还负责加载Web应用程序,并将其部署到Tomcat服务器中。 最后,org.apache.catalina.startup.catalina.start会调用servers的start方法,启动Tomcat服务器。在服务器启动后,它会监听客户端的请求,并将请求分发到相应的Web应用程序进行处理。 总之,org.apache.catalina.startup.catalina.start是Apache Tomcat中负责启动Tomcat服务器的一个重要类,它通过加载配文件和初始化各项服务和组件,最终启动Tomcat服务器,并监听客户端的请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值