在开发和部署Spring Boot应用程序时,有时可能会遇到org.apache.catalina.LifecycleException异常。这个异常通常表示Tomcat容器在启动应用程序时遇到了问题。
本文将基于 Tomcat8 进行分析,具体版本为 Tomcat8 当前官网最新修改(2019-11-21 09:28)的版本 v8.5.49
这些启动类或组件不处理具体的请求,它们主要是“管理”,管理下层组件的生命周期,并给下层组件分配任务,即路由请求到应负责的组件。
(1)tomcat启动时会先调用脚本,在脚本运行时会启动Bootstrap的main方法,mian方法中会调用load方法进行初始化操作,通过责任链模式将所有结点初始化后,会调用start方法-该方法是tomcat启动的核心方法,即启动tomcat的核心线程。
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
1) Tomcat 最初由Sun公司的软件架构师 James Duncan Davidson 开发,名称为 “JavaWebServer”。
根据Tomcat源码来看一下Tomcat启动过程都做了什么 部分代码为主要流程代码,删去了try-catch以及一些校验逻辑,方便理解主流程 先来一张启动过程时序图,了解一下启动顺序 Tomcat启动
(1) 由于这个项目是一个maven项目,直接用maven编译命令查看是否可以编译成功,发现都SUCCESS.
tomcat支持单机模式与集群模式,通过集群模式来提供应用的高可用,保障业务的稳定。
本质上tomcat的启动流程和总体架构都离不开server.xml。在Server.xml中我们可以看到一些我们比较熟悉的配置。
一个 Tomcat 中有一个 Server,每个 Server 中至少有一个 Service。一个 Service 由至少一个 Connector 与一个 Container 组成。
In previous chapters you have seen how you can have a servlet container by instantiating a connector and a container and then associating them with each other. Only one connector could be used, and that was to serve HTTP requests on port 8080. You could not add another connector to service HTTPS requests, for example.
13.5 SpringBoot应用启动错误org.apache.catalina.LifecycleException
上文了解了大致tomat的相关架构,那么本文是针对tomcat的启动流程进行了解,。tomcat是通过Bootstrap的main方法进行启动,然后通过catalina对象中创建server.xml的解析器,一步到位创建出大部分组件,通过责任链模式进行层层管理。细节可以跟着调试代码关注如下。
完事儿打完包以后, 放到我本地Tomcat上跑了跑,发现没问题。但是部署到服务器上的Tomcat以后, 发现无法启动,错误如下:
**我的tomcat7用了好久了,可以说是最开始学习javaweb的时候下载的,看着别人的视频里一顿配置,于是我也跟着一顿配置,虽然当时完全不知道在干什么,感觉好厉害的样子!然后直到有一天,你可能把电脑里一些没什么卵用的自己瞎做的项目删除了之后,然后你启动你的tomcat的startup.bat的时候,让人无语的时候来了,只见刷的一下cmd窗口就飞过,然后就没了,你还是一脸蒙逼,什么也不知道。。。。。
Tomcat - Tomcat 8.5.55 启动过程源码分析阶段一_init实例化Bootstrap
检查<url-pattern></url-pattern>中配置的内容是否缺少“/” ,"/"表示当前web应用。
tomcat热加载和执热部署都是通过后台进程检测项目中的.class和目录是否发生变化。
springboot默认会在8080端口提供 HTTP 服务,所以这里是一个处理HTTP协议请求的 Http11NioProtocol 实例,使用 NIO 方式处理 HTTP 协议。 Connector 对HTTP请求的接收和处理并非亲自完成,而是委托该 Http11NioProtocol protocolHandler 完成
在Tomcat 架构解析到设计思想借鉴中我们学到 Tomcat 的总体架构,学会从宏观上怎么去设计一个复杂系统,怎么设计顶层模块,以及模块之间的关系;
九月 08, 2017 10:18:19 上午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:war_item' did not find a matching property. 九月 08, 2017 10:
实际上,之前创建了一个名为spring的项目,已经删除。现在运行其他项目,报错找不到已经删除的项目。
Tomcat 是 Java WEB 开发接触最多的 Servlet 容器,但它不仅仅是一个 Servlet 容器,它还是一个 WEB 应用服务器,在微服务架构体系下,为了降低部署成本,减少资源的开销,追求的是轻量化与稳定,而 Tomcat 是一个轻量级应用服务器,自然被很多开发人员所接受。
在上篇文章中我们看到了Tomcat架构中的核心组件,而且各个组件都有各自的作用,各司其职,而且相互之间也有对应的父子关系,那么这些对象的创建,调用,销毁等操作是怎么处理呢?
上回「码哥字节」站在上帝视角给大家拆解了 Tomcat 架构设计,分析 Tomcat 如何实现启动、停止,通过设计连接池与容器两大组件完成了一个请求的接受与响应。连接器负责对外交流,处理 socket 连接,容器对内负责,加载 Servlet 以及处理具体 Request 请求与响应。
来自:cnblogs.com/sword-successful/p/11383723.html
笔者在项目中采用dubbo作为分布式服务框架,在eclipse时直接启动部署dubbo服务的war包程序运行正常,但是执行junit单元测试时却出现如下错误提示:
项目依赖里面单独指定了servlet-api,类路径里面有多个版本servlet-api,导致类冲突
a.修改入口类 在入口类通过@ServletComponentScan注解进行标注并让此类继承SpringBootServletInitializer b.修改pom文件中的打包方式为war c.如果打成的war包启动时报如下错误,则需要屏蔽SpringBoot内置的web容器
Spring Boot内置了tomcat容器,直接运行Application就可以启动web服务器。
查看tomcat报错Invalid keystore format 百度查到证书与tomcat的jdk版本不兼容 升级jdk版本 现版本1.8.0_45升级1.8.0_201
首先建一个maven项目rick-spring-boot,并创建两个子项目分别是spring-boot和user,其中spring-boot项目就是模拟手写一个简单springboot,user就是用来测试手写的spring-boot的。
由于公司项目没给权限,无法直接拿到项目,现需要修改jar包的某张图片,直接在jar包并修改会报错
1.在jre/bin下添加rxtxParallel.dll,rxtxSerial.dll 文件
Bootstrap的main方法先new了一个自己的对象(Bootstrap),然后用该对象主要执行了四个方法:
从零开始手写Tomcat的教程14节----服务器组件Server和服务组件Service 服务器组件 StandardServer类 initialize方法 start方法 stop方法 await方法 Service接口 StandardService类 Connector和Container 与生命周期有关的方法 应用程序 Stopper类 小结 ---- 📷 ---- 服务器组件 📷 public interface Server { // ---------------------
今天在修改了一些代码,然后重新放到服务器上,启动服务器的时候报这个错误!我就很纳闷,修改的文件里面根本就没有涉及到tomcat配置文件的内容怎么会出现这样子内容呢?想了很久也网上百度了很多,很多博客提供的解答都没有解决我的问题,然后我们主管过来看了一会,给出了指导性的建议,去看tomcat下的conf/server.xml 文件。然后逐步排查.
本地开发环境idea启动项目正常,部署在linux服务器上面报上述jar包冲突,项目中用的是logback 日志,所以这里一定要排除slf4j-log4j12 包,不要排除logback-classic 包,通过idea maven项目管理可以看到jar包依赖关系
特别注意写了中文注释的地方,其余英文注释为源码自带的英文注释,总体来说这段代码还算比较简单易懂
Tomcat是我们最常用的Web容器,但是很少有人知晓其工作原理。下面就总结一下极客时间的课程《深入拆解 Tomcat & Jetty》,本文仅总结部分知识,有兴趣可以找相应的课程学习一番。
Tomcat - Tomcat 8.5.55 启动过程源码分析阶段二_load加载初始化
我做的一个考试系统,使用了hibernate和spring,原来使用的tomcat版本是6,后来把tomcat换成了apache-tomcat-7.0.30-windows-x64,spring的版本是:3.1
Tomcat有三种运行模式:bio、nio、apr,其中tomcat可以通过操作系统本地apr,提高处理静态资源的时候速度,从而提升性能
领取专属 10元无门槛券
手把手带您无忧上云