前言:
1.在Springboot-web应用启动过程中,执行子容器的OnRefresh步骤时,创建并初始化一个内置的tomcat8容器
2.然后在执行子容器的finishRefresh步骤时,启动tomcat容器
tomcat-8相关:
1.Apache Tomcat 8支持Java EE 7规范,包括Java Servlet 3.1、JSP 2.3、Java统一表达式语言EL 3.0等
2.Servlet 3.1最大的改进是实现了非阻塞式的I/O通信。这使得性能得到巨大的改进,数据可以通过ReadListener和WriteListener接口以异步的方式进行管理。
tomcat运行模式:
1.bio:阻塞式IO操作,使用的是传统的java i/o处理方式
2.nio:基于java中非阻塞IO操作的API实现
3.apr:从操作系统级别解决异步IO问题,大幅度提高服务器的并发处理性能,也是Tomcat生产环境运行的首选方式
4.目前tomcat-8默认情况下全部是运行在nio模式下
apr配置相关资料:
tomcat容器的核心类为:TomcatEmbeddedServletContainer
tomcat容器创建流程:
public EmbeddedServletContainer getEmbeddedServletContainer(
ServletContextInitializer... initializers) {
//创建一个tomcat实例
Tomcat tomcat = new Tomcat();
File baseDir = (this.baseDirectory != null ? this.baseDirectory
: createTempDir("tomcat"));
//设置一个目录存放临时文件
tomcat.setBaseDir(baseDir.getAbsolutePath());
//步骤1.创建一个Connector连接器,默认使用协议"org.apache.coyote.http11.Http11NioProtocol"
Connector connector = new Connector(this.protocol);
//添加Connector到tomcat配置serveic中
tomcat.getService().addConnector(connector);
//步骤2.定制Connecter
customizeConnector(connector);
tomcat.setConnector(connector);
tomcat.getHost().setAutoDeploy(false);
//步骤3.配置tomcat引擎
configureEngine(tomcat.getEngine());
for (Connector additionalConnector : this.additionalTomcatConnectors) {
tomcat.getService().addConnector(additionalConnector);
}
//步骤4.初始化一个TomcatEmbeddedContext上下文
prepareContext