
Tomcat源码分析
本专栏主要依据Tomcat4的源码来分析怎么实现一个web服务器,总结一些自己在分析源码中遇到的问题及解决方案!
haitao111313
这个作者很懒,什么都没留下…
展开
-
Tomcat源码分析(十)--部署器
我们知道,在Tomcat的世界里,一个Host容器代表一个虚机器资源,Context容器代表一个应用,所谓的部署器就是能够把Context容器添加进Host容器中去的一个组件。显然,一个Host容器应该拥有一个部署器组件。简单的部署代码应该是下面这样的:Context context = new StandardContext();Host host = new StandardHost原创 2012-07-12 09:02:12 · 3549 阅读 · 3 评论 -
Tomcat源码分析(九)--Session管理
在明白Tomcat的Session机制之前,先要了解Session,Cookie,JSESSIONID这几个概念。JSESSIONID是一个唯一标识号,用来标识服务器端的Session,也用来标识客户端的Cookie,客户端和服务器端通过这个JSESSIONID来一一对应。这里需要说明的是Cookie已经包含JSESSIONID了,可以理解为JSESSIONID是Cookie里的一个属性。让我假设原创 2012-07-11 15:16:29 · 12591 阅读 · 4 评论 -
Tomcat源码分析(八)--载入器
在讲Tomcat的载入器之前,先要了解一下java的类加载机制,这里就不具体说了,仅仅写一点我认为比较重要的东西: 1:一般实现自己的类加载器是重写ClassLoader的findClass方法,然后在这个方法里面读取class文件为byte[]数组,传入defineClass方法,defineClass方法返回我们加载的类。这样便实现了我们自己的简单的类加载器。下面是一个简单的自定义类原创 2012-07-10 20:14:42 · 3696 阅读 · 1 评论 -
Tomcat源码分析(七)--单一启动/关闭机制(生命周期)
在前面的大部分文章都是讲连接器和容器的,以后的内容会偏向写一些Tomcat的其他组件以及一些细节的东西。 Tomcat有很多组件,要一个一个启动组件难免有点麻烦。由于Tomcat的包含关系是Catalina->Server->Service->容器/连接器/日志器等,于是可通过父组件负责启动/关闭它的子组件,这样只要启动Catalina,其他的都自动启动了。这种单一启动和关闭的机制是通过实原创 2012-07-10 12:23:27 · 3557 阅读 · 3 评论 -
Tomcat源码分析(六)--日志记录器和国际化
日志记录器挺简单的,没有很多东西,最主要的就是一个Logger接口: public interface Logger { public static final int FATAL = Integer.MIN_VALUE; public static final int ERROR = 1; public static final int WARNIN原创 2012-07-09 08:34:12 · 3032 阅读 · 0 评论 -
Tomcat源码分析(五)--容器处理连接之servlet的映射
本文所要解决的问题:一个http请求过来,容器是怎么知道选择哪个具体servlet? 我们知道,一个Context容器表示一个web应用,一个Wrapper容器表示一个servlet,所以上面的问题可以转换为怎么由Context容器选择servlet,答案是映射器。映射器是实现了Mapper接口的类,作用就是根据请求连接(主要是协议和路径)来选择下一个容器,可以看做是一个哈希表,根据关原创 2012-07-08 09:32:54 · 4296 阅读 · 2 评论 -
Tomcat源码分析(四)--容器处理链接之责任链模式
目标:在这篇文章希望搞明白connector.getContainer().invoke(request, response);调用容器的invoke后是怎么传递到 servlet或者jsp的? 由上篇文章Tomcat源码分析(三)--连接器是如何与容器关联的?可知,connector.getContainer()得到的容器应该是StandardEngine(其实应该是由server.原创 2012-07-07 16:21:25 · 6040 阅读 · 1 评论 -
Tomcat源码分析(三)--连接器是如何与容器关联的?
这篇文章要弄懂一个问题,我们知道,一个链接器是跟一个容器关联的,容器跟链接器是在什么时候关联上的? 在明白这个问题前要先了解一下Digester库,这个库简单的说就是解析xml文件,这里有两个概念:模式和规则,所谓模式就是一个xml的标签,规则就是遇到一个xml标签需要做什么,看一下他主要的三个方法: 1:addObjectCreate(String pattern, Stri原创 2012-07-06 11:18:33 · 5398 阅读 · 5 评论 -
Tomcat源码分析(二)--连接处理
目标:在这篇文章希望搞明白http请求到tomcat后是怎么由连接器转交到容器的? 在上一节里已经启动了一个HttpConnector线程,并且也启动了固定数量的HttpProcessor线程。HttpConnector用来等待http连接,得到http连接后交给其中的一个HttpProcessor线程来处理。接下里具体看一下HttpConnector是怎么得到连接得,以及HttpP原创 2012-07-06 08:35:16 · 5848 阅读 · 0 评论 -
Tomcat源码分析(一)--服务启动
对Tomcat感兴趣是由于《深入理解Tomcat》这本书,之前仅仅是使用到了Tomcat,这本书却让我对Tomcat的实现理解的更加透彻了,在这里希望记录一些自己对Tomcat的理解。由于这本书是基于tomcat4的,所以我的文章也是基于tomcat4的,但是tomcat的核心思想应该是没有变的,最主要的两个组件还是连接器和容器。主要为了学习,就不管是新版本还是旧版本了。 为了后面的原创 2012-07-05 11:11:38 · 18904 阅读 · 15 评论