
Tomcat
文章平均质量分 86
openBlog
openBlog
展开
-
Tomcat一次请求处理的前世今生(一) 处理线程的产生
在默认的配置下Tomcat启动好之后会看到后台上总共有6个线程在运行。其中1个用户线程,剩下5个为守护线程(如下图所示)。 如果你对用户线程、守护线程等概念不熟悉,请参看前一篇文章——Tomcat7服务器关闭原理。 这里重点关注以http-bio-8080开头的两个守护线程(即http-bio-8080-Acceptor-0和http-bio-8080-AsyncTimeout),因为这是原创 2014-04-30 02:38:55 · 960 阅读 · 0 评论 -
Tomcat一次请求处理的前世今生 (三) 请求与容器具体组件的匹配
前一篇文章分析到了org.apache.coyote.http11.AbstractHttp11Processor类process方法,以解析请求头的getInputBuffer().parseRequestLine方法调用为例,看到如何从Socket的IO流中取出字节流数据,根据Http协议将字节流组装到Tomcat内部的org.apache.coyote.Request对象的相关属性中。原创 2014-04-30 02:48:32 · 913 阅读 · 0 评论 -
Tomcat一次请求处理的前世今生(二)Socket连接转换成内置请求对象
先抛开之前所看到的Tomcat源码不谈,Tomcat作为一个用Java实现的Web服务器,如果让你来实现,那么从何入手? 这里首先需要厘清的是Web服务器的概念,谷歌了一下,发现这条解释还算靠谱点,【在网络环境下可以向发出请求的浏览器提供文档的程序】。这里面重点有两条,1.网络环境下,2.能够给出响应。用Java写过网络通信程序的都知道,这里必然会用到Socket编程。我们自己要实现的服务器程序转载 2014-04-30 02:42:57 · 1645 阅读 · 0 评论 -
Tomcat7中web应用加载原理(一) Context构建
为什么关心Tomcat中一个web应用的加载过程?在前面的文章中看过多次Tomcat的组件结构图,这里再贴出来回顾一下: 之前的《Tomcat7启动分析》系列文章中看到Tomcat启动的时候将会解析server.xml,根据里面所配置的各个节点信息逐一初始化和启动相应组件(即分别调用它们的init和start方法),但浏览一下Tomcat7源码中的server.xml的内容,里面对应上图中的转载 2014-04-30 02:56:03 · 1722 阅读 · 0 评论 -
Tomcat7 web应用的加载原理 (三) Lisener Filer Servlet的加载和调用
前一篇文章分析到了org.apache.catalina.deploy.WebXml类的configureContext方法,可以看到在这个方法中通过各种setXXX、addXXX方法的调用,使得每个应用中的web.xml文件的解析后将应用内部的表示Servlet、Listener、Filter的配置信息与表示一个web应用的Context对象关联起来。 这里列出configureContext转载 2014-04-30 02:51:25 · 1347 阅读 · 0 评论 -
Tomcat7自动加载类及检测文件变动原理
在一般的web应用开发里通常会使用开发工具(如Eclipse、IntelJ)集成tomcat,这样可以将web工程项目直接发布到tomcat中,然后一键启动。经常遇到的一种情况是直接修改一个类的源文件,此时开发工具会直接将编译后的class文件发布到tomcat的web工程里,但如果tomcat没有配置应用的自动加载功能的话,当前JVM中运行的class还是源文件修改之前编译好的class文件。可转载 2014-04-30 03:01:39 · 1344 阅读 · 0 评论 -
Tomcat7 web应用的加载原理 (二) web.xml解析
前一篇文章讲了org.apache.catalina.startup.HostConfig的lifecycleEvent方法中所做的事情。最后看到在Tomcat启动时或启动后(后台线程定时扫描)会调用HostConfig类的deployApps方法: Java代码 /** * Deploy applications for any directories or WAR f转载 2014-04-30 02:58:14 · 994 阅读 · 0 评论