tomcat启动报错:org.apache.catalina.core.ContainerBase.addChildInternal Contain

tomcat启动报错:01-Nov-2019 22:00:47.482 严重 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]

在这里插入图片描述
tomcat一直都用的好好,我写登录时,登录后的主界面也出来了,登录进去了,但是!!!我写退出的时候,新建了一个Servlet,一直报这个错,内心崩溃了啊,网上说是因为web.xml的问题,我认真的看过了,没问题呀,还有的说tomcat与jdk版本不一致,但是我又是一致的,真的是内心一万个mmp,后来我认真的看了看Servlet,@WebServlet(“logout”)这里居然少了个斜杠!!!居然是这么低级的错误!!!

放图:
在这里插入图片描述
加上斜杆就没问题了
在这里插入图片描述

网上找了一下tomcat的初始化大致的步骤
1:当接受到启动命令时 初始化类加载器 初始化核心类的 init()
2:初始化Tomcat 的信息 加载资源 等待请求的到来

当接受到启动命令时 详细动作(第一步)

在 org.apache.catalina.startup.Bootstrap 类的 init() 方法中
1:装配类加载器 commonLoader / sharedLoader / catalinaLoader
2:加载启动管理类 org.apache.catalina.startup.Catalina

第二步又分多小步

1:初始化Tomcat 信息

设置等待参数为true
初始化堆栈/读取配置/启动监听/初始化多个结果集/输出加载信息/初始化以及注册所有对象为JMX代理
(在这一步中设置了单一的入口链接 http://127.0.0.1:8080)
2:Catalina 的初始化
1)首先是加载服务StandardService -> starts Engine (ContainerBase ->Logger,Loader,Realm,Cluster etc)类的加载与初始化 / 开启线程上下文/加载需要部署的项目寻找路径是(webapps & conf/Catalina/localhost/*.xml) 然后加载处理应用的web.xml。
我想问题应该出在这里:在JavaEE6.0的及之后,我们可以使用Servlet3.0版本的@WebServlet注解,从而省去web.xml文件,于是这个步骤应该会变成去加载我们在注解里添加的配置,所以如果注解中的urlPatterns写错了的话,那么应该会导致tomcat初始化失败,从而突然暴毙。以上就是我的分析,欢迎大佬指正。

2)启动一个线程来监听context/web.xml 如果更改就重新加载
3:当接收到请求 (会一直调用协议处理器)

1)单独开启的一个线程 等待接受请求的到来
2)获取到一个请求时分配一个TCP链接来处理请求(提供了一个容器)
(HTTP 请求在一个内部缓冲区中解析 [请求行/标头] 并将结果存储在结果集中 request )
3)解析完请求之后会将参数绑定到线程/并装载要使用的类以及实例的编译JSP
4)调用Servlet891350

  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值