zoukankan      html  css  js  c++  java
  • java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component...

      今天开发犯了一个特lowB的错,记录下来,引以为戒!

    严重: A child container failed during start
    java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/UpLoadExcel]]
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:192)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1122)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
    Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/UpLoadExcel]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        ... 6 more

      问题描述:启动tomcat就报这个错(一个子容器在启动时失败。)

      问题解决:从头到尾检查了一通tomcat和servlet的配置,最后发现竟是web.xml中servlet的映射路径配置错误导致的

      <servlet>
          <servlet-name>excelUploader</servlet-name>
          <servlet-class>com.trs.webframework.controler.servlet.ExcelUploader</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>excelUploader</servlet-name>
          <url-pattern>excelUploader.do</url-pattern>  //错误配置,前面需加个“/”
      </servlet-mapping>

      总结:url-pattern规则:有精确匹配,最长路径匹配,扩展匹配,如果前三条规则都没有匹配到,则会交给第四种叫default servlet处理。
    以”/’开头和以”/*”结尾的是用来做路径映射的; “/” 是用来定义default servlet映射的。  以前缀”*.”开头的是用来做扩展映射的。剩下的都是用来定义详细映射的;比如: /aa/bb/cc.action。
        <url-pattern>/</url-pattern>和<url-pattern>/*</url-pattern>的区别:
        <url-pattern>/</url-pattern> 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
        <url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)

           注意:路径和扩展名匹配无法同时设置,因为这种匹配即属于路径映射,也属于扩展映射,导致容器无法判断。比如下面的三个<url-pattern>都是非法的,如果设置,启动tomcat服务器会报错。
        <url-pattern>/aa/*.jsp</url-pattern>
        <url-pattern>/*.jsp</url-pattern>
        <url-pattern>bb*.jsp</url-pattern>
          另外注意:<url-pattern>/aa/*/bb</url-pattern>
          这个是精确匹配,url必须是 /aa/*/bb,这里的*不是通配的含义

      

  • 相关阅读:
    Java学习第一周汇报
    Java暑期学习第八天日报
    Java暑期学习第十天日报
    Java暑期学习第十二天日报
    Java学习第二周汇报
    Java暑期学习第九天日报
    0006 列表(ul、ol、dl)
    0015 行高那些事:lineheight
    0016 CSS 背景:background
    HTTP中GET与POST的区别 99%的错误认识
  • 原文地址:https://www.cnblogs.com/zs-notes/p/9272613.html
Copyright © 2011-2022 走看看