【问题】 在Tomcat 8以后,默认都是使用的NIO,并且内部有一定的缓存,那么 Tomcat是如何缓存Request和Response的输入输出流的? 【思路】 这个感觉比较简单,NIO的输入单位是ByteBuffer,那么直接在Res … 继续阅读 Tomcat 源码剖析(七)Response.getOutputStream() 是如何缓存数据流的?
月份:2019年4月
设计模式之观察者模式
【情景模式】 目前需要开发一个大型系统,这个大型系统订了一个生命周期,比如初始化-启动-运行-关闭-销毁,由于此系统比较大,因此在每个生命周期都需要做一定的准备工作,并且后期维护可能会修改这些准备工作。 【代码】 伪代码如下: public … 继续阅读 设计模式之观察者模式
Tomcat 源码剖析(六)Tomcat如何读取web.xml并生成ServletConfig对象
【问题】 Tomcat是如何读取web.xml并生成ServletConfig对象的 【猜想】 这个没什么思路,要是按照常规的来,结合Tomcat读取server.xml的方式来看,应该同样是是通过Degister通过规则配置生成相应的属性 … 继续阅读 Tomcat 源码剖析(六)Tomcat如何读取web.xml并生成ServletConfig对象
Tomcat源码剖析(五)Tomcat如何管理Servlet生命周期
【问题】 Servlet规范中规定Servlet生命周期只调用一次init()和distory()方法,每次请求来只调用service()方法,那么Tomcat是如何管理Servlet生命周期的? 高并发请求中,如果保证只初始化一个Serv … 继续阅读 Tomcat源码剖析(五)Tomcat如何管理Servlet生命周期
Tomcat源码剖析(四)Tomcat如何找到请求Url对应的Servlet
【分析】 在Servlet中,规定的Url组成为:ip:port/context/servlet-path 因此,想要找到对应的Servlet,必须首先解析context,然后再找到对应的servlet-path 同时,servlet协议规 … 继续阅读 Tomcat源码剖析(四)Tomcat如何找到请求Url对应的Servlet
Tomcat源码剖析(三)Connector 处理请求连接分析
Connector 处理请求连接分析 Tomcat 是如何解析Http请求协议的? 在上一章中,分析了Tomcat中的connector的初始化与启动。但是由于使用的是Tomcat 9的代码,代码中默认使用的是NIO处理的IO连接,而NIO … 继续阅读 Tomcat源码剖析(三)Connector 处理请求连接分析