随笔分类 -  Tomcat

摘要:一、长连接 在Http请求头中,Connection: keep-alive 代表长连接。在tomcat io线程读写时,是否保持长连接的方法如下: // doRun() method logic in SocketProcessor if (handshake == 0) { SocketStat 阅读全文
posted @ 2021-10-27 17:30 上官兰夏 阅读(236) 评论(0) 推荐(0)
摘要:一、请求数据的读取 1、读取请求行 2、读取请求头 3、读取请求体 综合上面三个序列图,对于请求行,请求头,请求体的读取都最终调用了NioSocketWrapper 对象实例的 fillReadBuffer() 方法。只不过请求行和请求头读取参数传递为 true,请求体读取参数传递为 false。 阅读全文
posted @ 2021-10-27 17:30 上官兰夏 阅读(404) 评论(0) 推荐(0)
摘要:一、处理请求的核心流程 SocketProcessor.doRun()--> ConnectionHandler.process()--> AbstractProcessorLight.process()--> Http11Processor.service--> CoyoteAdapter.ser 阅读全文
posted @ 2021-10-27 17:29 上官兰夏 阅读(248) 评论(0) 推荐(0)
摘要:一、NIO模型 Tomcat7以后,默认的IO模型就是NIO了,但是它的实现跟常用的Reactor模型略有不同,具体设计如下: 可以看出多了一个BlockPoller 的设计,这是因为在Servlet规范中ServletInputStream和ServletOutputStream是阻塞的,所以请求 阅读全文
posted @ 2021-10-27 17:27 上官兰夏 阅读(575) 评论(0) 推荐(0)
摘要:一、Lifecycle tomcat启动,实际上就是对以上的组件进行实例化,因此使用Lifecycle接口统一管理各组件的生命周期,根据各个组件之间的父子级关系,首先调用init()方法逐级初始化各组件,然后在调用start()的方法进行启动。 //初始化 public void init() th 阅读全文
posted @ 2021-10-27 17:24 上官兰夏 阅读(1153) 评论(0) 推荐(0)
摘要:一、架构图 二、容器组件 server:整个servlet容器,一个tomcat对应一个server,一个server包含多个service,server在tomcat中的实现类是:StandardServer。 service:一个service包含多个connector(接受请求的协议),和一个 阅读全文
posted @ 2021-10-27 17:23 上官兰夏 阅读(713) 评论(0) 推荐(0)