How Tomcat Works笔记
本专栏主要是记录了本人在学习How Tomcat Works一书时的读书笔记,希望能对大家有所帮助。
程序员小董
毕业后先在腾讯做了近3年的kv存储引擎开发
之后在阿里做了3年多互动游戏的开发
展开
-
tomcat中的线程问题2
最近在看线程的有关知识,碰到一个小问题,目前还没有解决,现记录下来。如果在我们自己写的servlet里有成员变量,因为多线程的访问就会出现一些线程问题。这点大家都知道,我们看下面的例子。public class ConcurrentTest extends HttpServlet { PrintWriter output; @Override protected原创 2015-01-03 21:26:09 · 1471 阅读 · 1 评论 -
tomcat中的线程问题
看这篇文章之前,请先阅读:how tomcat works 读书笔记 十一 StandWrapper 上 地址如下:http://blog.csdn.net/dlf123321/article/details/41247693在tomcat中,用户的一个请求会被一个servlet来处理。那么当第一个人请求servletA时,它会在tomcat内部的类加载器中加载,得到一个ser原创 2014-12-29 00:25:52 · 2336 阅读 · 2 评论 -
How tomcat works 读书笔记十七 启动tomcat 上
一路跋山涉水,这是最后一章了。关于tomcat的启动,有两个类,一个是Catalina类,一个是Bootstrap类。理论上,两个类可以和到一起,但是为了支持多种运行模式,又把他们分开了。为了让用户更方便的启动tomcat,还有批处理文件startup.bat(终于见到最顶层的模块了!!)Catalina先说Catalina它里面有一个Server组件(不懂的看第1原创 2014-12-16 21:01:34 · 1217 阅读 · 0 评论 -
How tomcat works 读书笔记十七 启动tomcat 下
在上一节中,我们程序的起始位置还是Bootstrap,现在我们通过bat文件来启动这个类。在分析catalina.bat之前,我们先看看几个简单的我们能用到的dos命令。基础知识1 rem 注释,解释器不会执行rem开始的命令2 pause 用于暂停正在执行的批处理文件,按任意键后继续3 echo 在控制台显示一段文本 如果显示变量的值需要在变量前后加% 如echo原创 2014-12-16 23:16:34 · 1276 阅读 · 0 评论 -
How tomcat works 读书笔记十五 Digester库 下
在这一节里我们说说ContextConfig这个类。这个类在很早的时候我们就已经使用了(之前那个叫SimpleContextConfig),但是在之前它干的事情都很简单,就是吧context里的configured变量置为true。在这里我们看看完整版的ContextConfig都干了什么。在tomcat的实际部署中,StandContext类的实际监听器是org.apache.catal原创 2014-12-12 16:09:07 · 1148 阅读 · 0 评论 -
How tomcat works 读书笔记十五 Digester库 上
Digester库在前面的几个章节里,我们对tomcat里各个组件的配置完全是使用写硬编码的形式完成的。如Context context = new StandardContext();Loader loader = new WebappLoader();context.setLoader(loader);就完成了向context容器里添加WepappLoader的功能。这原创 2014-12-08 13:21:24 · 1391 阅读 · 0 评论 -
How tomcat works 读书笔记十四 服务器组件和服务组件
之前的项目还是有些问题的,例如1 只能有一个连接器,只能处理http请求,无法添加另外一个连接器用来处理https。2 对容器的关闭只能是粗暴的关闭Bootstrap。服务器组件org.apache.catalina.Server接口的实例用来表示Catalina的整个servlet引擎。我们使用Server就是因为,它用一种优雅的方式来启动/关闭整个系统。下面是启动和原创 2014-12-03 17:04:12 · 1217 阅读 · 0 评论 -
How tomcat works 读书笔记十三 Host和Engine
HostHost是Context的父容器。如果想在一个tomcat上部署多个context就需要使用Host了。上下文容器的父容器是主机,但是可能有一些其它实现,没有必要的时候也可以忽略。不过在实践中,即使是一个Context,我们也使用了Host,为什么?后面我们再说。Host是个接口,里面有个map方法比较重要 /** * Return the Context th原创 2014-11-27 11:19:52 · 1418 阅读 · 0 评论 -
How tomcat works 读书笔记十二 StandardContext 下
对重载的支持tomcat里容器对重载功能的支持是依靠Load的(在目前就是WebLoader)。当在绑定载入器的容器时 public void setContainer(Container container) { ... // Register with the new Container (if any) if ((th原创 2014-11-24 12:50:17 · 1151 阅读 · 0 评论 -
How tomcat works 读书笔记十二 StandardContext 上
在tomcat4中,StandardContext.java是最大的一个类,有117k。废话不说,开始分析吧。其实要分析StandardContext,也就主要分析两个方法,一个start,一个invoke。两个变量这里首先咱们得说两个boolean型的变量available,configured。先说available,它表示了StandardContext是否可用,初始值为原创 2014-11-22 11:42:24 · 1430 阅读 · 0 评论 -
how tomcat works 读书笔记 十一 StandWrapper 下
StandardWrapperValveStandardWrapperValve是StandardWrapper的基础阀,主要完成了三个工作。1 调用StandardWrapper的allocate的方法来获得该StandardWrapper所表示的servlet实例2 执行与该servelt相关联的全部过滤器3 调用servlet的service方法其中第二三步可以细分为原创 2014-11-18 23:32:26 · 1193 阅读 · 0 评论 -
how tomcat works 读书笔记 十一 StandWrapper 上
方法调用序列 下图展示了方法调用的协作图: 这个是前面第五章里,我画的图: 我们再回顾一下自从连接器里 connector.getContainer().invoke(request, response); 这句代码运行之后发生的事情; 这是第五章的时序图,放在这一章同样适用。。。 我们仔细分析一下: 1首先连接器创建请求与响应对象; 2调用这行代码原创 2014-11-18 15:34:37 · 1714 阅读 · 0 评论 -
how tomcat works 读书笔记九 Session管理
在看本文之前,请先查阅相关Session与Cookie的资料。Catalina通过一个叫管理器的组件来完成 session 管理工作,该组件由org.apache.catalina.Manager interface 接口表示。一个管理器通常跟一个上下文容器相关联,它负责创建、更行以及销毁 session 对象并能给任何请求组件返回一个合法的 session。Session对象um原创 2014-11-10 15:04:10 · 1383 阅读 · 0 评论 -
how tomcat works 总结 三
第七章 日志记录器第 7 章包括日志,该组件是用来记录错误信息和其他信息的。这一章比较简单,类图如下:根据名字我想大家都能猜出来三个实现类都是做什么的,一个按常规输出到控制台,一个按错误模式输出到控制点,一个输出到文件。Logger类中有一个参数,verbosity,用来表示日志等级,默认为ERROR。 public static final int FATAL = Int原创 2014-11-04 12:31:22 · 1254 阅读 · 0 评论 -
how tomcat works 总结 二
第五章 servlet容器第 5 章讨论 container 模块。container 指的是 org.apache.catalina.Container 接口,有4 种类型的 container:engine, host, context 和 wrapper。这章提供了两个工作于 context 和wrapper 的程序。容器共分四类,类图如下:一个wrapper就是一个serv原创 2014-11-03 17:51:53 · 2210 阅读 · 0 评论 -
how tomcat works 总结
希望各位网友在看完>一书或者鄙人的tomcat专栏文章后再看这篇博客这里主要是梳理各个章节的核心概念第一章 一个简单的Web服务器第1章从这本书一开始就介绍了一个简单的HTTP服务器。要建立一个可工作的HTTP服务器,你需要知道在 java.net 包里边的 2 个类的内部运作:Socket 和 ServerSocket。这里有关于这 2个类足够的背景资料,使得你能够理解附带程序是原创 2014-11-02 20:46:42 · 2333 阅读 · 2 评论 -
how tomcat works 读书笔记 八 载入器下
载入类我们看看之前的文章,这一节就从SimpleWrapper的loadServlet讲起。SimpleWrapper.java如下(省略了try catch及其他部分代码)public Servlet loadServlet() throws ServletException { ... String actualClass = servletClass;原创 2014-10-30 15:16:47 · 1305 阅读 · 0 评论 -
How Tomcat Works 读书笔记 八 载入器 上
Java的类载入器详细资料见http://blog.csdn.net/dlf123321/article/details/40431297首先说明两个术语仓库(repository),表示类加载器会在哪里搜索要载入的类;资源(resource),知道一个类载入器中的DirContext对象,它的文件跟路径指的就是上下文的文件跟路径。在tomcat中,我们使用了自定义载入原创 2014-10-29 13:21:41 · 1641 阅读 · 0 评论 -
how tomcat works读书笔记 七 日志记录器
大家可以松一口气了,这个组件比较简单,这一节和前面几节想比,也简单的多。Logger接口Tomcat中的日志记录器都必须实现org.apache.catalina.Logger接口。package org.apache.catalina;import java.beans.PropertyChangeListener;public interface Logger {原创 2014-10-20 15:51:36 · 1382 阅读 · 1 评论 -
how tomcat works 六 生命周期
我觉得这一章叫tomcat中的观察者模式,比较好!首先,不要看本章,请查看一下关于观察者模式的资料比较好。推荐以下知识点基础篇设计模式之禅----观察者模式大家可以找到pdf阅读一下另外本人的博客中也有一篇> 很久之前写的,是阅读上书观察者模式时做的笔记,写的实在不敢恭维,如果找不到书,倒是可以看看鄙人的博客。http://www.cnblogs.com/wangj原创 2014-10-19 14:44:29 · 1411 阅读 · 1 评论 -
how tomcat works 5 servlet容器 下
上一节,我们主要说的是Wrapper容器,这一节我们说Context容器。再重申一遍,一个Context容器可以包含多个Wrapper容器;一个Wrapper容器就表示一个独立的servlet。Context应用程序这里我们得提出一个新的组件----映射器,它帮助servlet容器---在这一节汇总就是Context实例选择一个子容器(这里就是Wrapper实例)来处理某个指定的请原创 2014-10-18 15:51:14 · 1393 阅读 · 0 评论 -
how tomcat works 五 servlet容器 上
servlet容器是用来处理请求servlet资源,并为Web客户端填充response对象的模块。在上一篇文章(也就是书的第四章)我们设计了SimpleContainer类,让他实现Container接口,也基本完成了容器的作用。但是我们得知道在实际的tomcat中有4类容器:Engine: 表示整个Catalina servlet引擎;Host: 包含一个或多个Context容器的虚拟原创 2014-10-15 14:22:05 · 1635 阅读 · 0 评论 -
how tomcat works 读书笔记四 tomcat的默认连接器
其实在第三章,就已经有了连接器的样子了,不过那只是一个学习工具,在这一章我们会开始分析tomcat4里面的默认连接器。连接器Tomcat连接器必须满足以下几个要求1 实现org.apache.cataline.Connector接口2 负责创建实现了org.apache.cataline.Request接口的request对象3 负责创建实现了org.apache.ca原创 2014-10-09 21:26:03 · 1800 阅读 · 0 评论 -
How Tomcat Works读书笔记三-------连接器
几个概念HttpServlet,ServletServlet是一个接口,定义了一种网络服务,我们所有的servlet都要实现它(或它的子类)HttpServlet是一个抽象类,它针对的就是http网络服务当然如果以后再有其他的网络服务,可以再定义一个类,让它实现Servlet即可。HttpServletRequest,ServletRequest先说ServletReque原创 2014-10-17 08:55:46 · 1458 阅读 · 0 评论 -
how tomcat works 读书笔记(二)----------一个简单的servlet容器
app1(建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/article/details/39378157)回顾我们上一章,我们开发了一个最最简单的web服务器,它可以使用户访问服务器内的静态资源。当然这是远远不够的,在这一节里,我们就试着让服务器在能相应原创 2014-10-16 08:51:29 · 2117 阅读 · 5 评论 -
how tomcat works 读书笔记(一)----------一个简单的web服务器
http协议若是两个人能正常的说话交流,那么他们间必定有一套统一的语言规则http分两部分,一个是请求(客户端发给服务器),一个是回复(服务器发给客户端)。先看http请求 下面就是一个http请求的例子,其中的各项参数,请查阅相关资料。(http://www.cnblogs.com/yin-jingyu/archive/2011/08/01/2123548.html)原创 2014-10-14 10:50:29 · 2542 阅读 · 2 评论