tomcat源码研读笔记
文章平均质量分 78
plkkoko
IT码农一个
展开
-
tomcat源码研读笔记—Catalina类
之前一直想了解tomcat的工作原理,苦于项目繁杂,无法深入源码进行了解;最近由于不招领导待见,手头项目急剧下降,正好有空最近好好看下tomcat的源码,写写研读笔记!我们在研读tomcat源码的时候,一开始就从简入手,由简至繁,只要抓住了主线,一些细节在研读的过程中将慢慢清晰。所以我们首先由catalina类的start()方法入手,前面的Boostrap类,.bat,.sh等文件的研读,等...原创 2018-03-21 17:28:38 · 393 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的接收请求之四 StandardContext接收请求
StandardContext继承关系:根据继承关系,我们可以知道,跟之前处理请求的机制基本是一致的。只是standardContext重写了父类的invoke方法: public void invoke(Request request, Response response) throws IOException, ServletException { // Wait i...原创 2018-03-22 08:54:14 · 408 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的接收请求之三 StandardHost接收请求
在研读StandardHost的时候,我们再查看下它的继承关系:我们会发现其实它跟StandardEngine的继承关系是很相似的,只是变了个Host接口和多个个Deployer接口而已,其他都是一样的。 同样的1, 调用了ContainerBase中的Invoke方法2,进而掉用了valve的invoke方法,而这里实现了valve接口的实现类是StandardHostValve3,这个时候...原创 2018-03-22 08:54:04 · 1101 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的接收请求之二 StandardEngine接收请求
根据上一章节的分析,我们知道HttpProcessor最后根据请求信息,构建好request和response之后,调用HttpConnector容器的invoke方法: connector.getContainer().invoke(request,response)将请求传递给了HttpProcessor的容器,那么我们的疑问来了,这个container究竟是谁呢?它的实现类在哪里?如果我...原创 2018-03-22 08:53:55 · 276 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的接收请求之一 HttpProcessor接收请求
根据之前的剖析,我们知道tomcat启动好之后,一直在等待这个请求,而这个等待请求的过程就是在HttpConnector的run方法里边,我们可以认为在tomcat启动好之后,就开启了线程在等待着前端发过来的请求:while (!stopped){ // Accept the next incomingconnection from the server socket ...原创 2018-03-22 08:53:44 · 703 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的启动之七 HttpConnector的启动
我们从启动流程图上可以了解到,当standardWrapper启动完成之后,那么返回到standardService的start方法里边时,会执行HttpConnector的start方法:HttpConnector的start方法源码:public void start() throwsLifecycleException { // Validate and update our ...原创 2018-03-22 08:53:25 · 236 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的启动之六 StandardWrapper的启动
StandardWrapper的继承关系类图如下:我们查看standardWrapper的start方法的源码: public void start() throws LifecycleException { // Start up this component super.start(); // Load and initialize an instanc...原创 2018-03-21 17:32:24 · 231 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的启动之五 StandardContext的启动
我们首先看下StandardContext的继承关系:然后查看starndardContext的start方法源码:public synchronized void start() throwsLifecycleException { if (started) throw new LifecycleException (sm.getStr...原创 2018-03-21 17:32:14 · 647 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的启动之四 StandardHost的启动
我们首先了解下standardHost的继承关系:然后查看start代码如下: public synchronized void start() throwsLifecycleException { // Set error report valve if ((errorReportValveClass != null) && (!err...原创 2018-03-21 17:32:02 · 734 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的启动之三 StandardEngine的启动
这一章节开始,我们进入了所谓的“容器”内部了,standardEngine启动的源码如下: public void start() throws LifecycleException { // Log our server identification information System.out.println(ServerInfo.getServerInfo());...原创 2018-03-21 17:31:45 · 1205 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的启动之二 StandardService的启动
我们打开standardService类,查看start方法如下:public void start() throwsLifecycleException { // Validate and update our current component state if (started) { throw new LifecycleException ...原创 2018-03-21 17:31:33 · 319 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的启动之一 StandardServer的启动
我们在流程图上可以知道,当HttpConnector初始化完之后,那么程序将返回到Catalina类,开始调用standardServer的start方法,开始standardServer的启动流程了,所以我们返回到standardServer的start方法中进一步探究,源码如下:public void start() throws LifecycleException{ // Va...原创 2018-03-21 17:31:23 · 348 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的初始化之三 HttpConnector的初始化
现在我们来到了HttpConnector的世界里,开始了解初始化之道。剑指初始化方法initialize:public void initialize() throws LifecycleException { if (initialized) throw new LifecycleException ( sm.getString("...原创 2018-03-21 17:31:00 · 208 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的初始化之二 StandardService的初始化
这一章节,我们来研读下StandardService,查看initialize方法源码如下: public void initialize() throws LifecycleException { if (initialized) throw new LifecycleException ( sm.getString(...原创 2018-03-21 17:30:47 · 336 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的初始化之一 StandardServer的初始化
由上一章节我们可以知道,Catalina已经教棒给StandardServer了,我们可以直接打开StandardServer类,在打开的时候,我们要留意下static属性以及standardServer的构造方法,这些属性和构造函数的一些赋值在后继的调用中,将会使用到的:属性如: private static String exceptions[][] = { {"org.apa...原创 2018-03-21 17:30:34 · 394 阅读 · 0 评论 -
tomcat源码研读笔记—tomcat的接收请求之五 StandardWrapper接收请求
StandardWrapper的继承关系:从StandardWrapper的继承关系,我们根据之前的经验也可以推到出接收请求的过程了: 1, 调用了ContainerBase中的Invoke方法2, 进而调用了实现valve接口的StandardWrapperValve的invoke方法publicvoid invoke(Request request, Response response, ...原创 2018-03-22 08:54:23 · 420 阅读 · 0 评论