tomcat源码阅读之容器(Container)】的更多相关文章

一. 实现容器的接口是Container接口,Tomcat中共有四种类型的容器: 1.Engine:表示整个Catalina Servlet引擎: 2.Host:表示含有一个或者多个Context容器的虚拟主机,通常一个Engine下含有一个Host: 3.Context:表示一个web应用程序: 4.Wrapper :表示一个独立的Servlet: 二.Container接口的UML图: 三.Container接口: 1.容器管理相关:addChild, removeChild, findCh…
近来,我开始阅读tomcat的源码,感觉还挺清晰易懂:为了方便理解,我参考了网上的一些文章,把tomcat的组成归纳一下:整个tomcat的组成如下图所示: Tomcat在接收到用户请求时,将会通过以上组件的协作来给最终用户产生响应.首先是最外层的Server和Service来提供整个运行环境的基础设施,而Connector通过指定的协议和接口来监听用户的请求,在对请求进行必要的处理和解析后将请求的内容传递给对应的容器,经过容器一层层的处理后,生成最终的响应信息,返回给客户端. Tomcat的容…
一.Servlet过滤器: 1.介绍: Servlet过滤器本身并不生成请求和响应对象,它只提供过滤作用. Servlet过滤器能够在Servlet被调用之前检查Request对象,修改Request Header和Request内容: 在Servlet被调用之后检查Response对象,修改Response Header和Response内容.Servlet过滤器负责过滤的Web组件可以是Servlet.JSP或HTML文件. 过滤器的工作流程:  2.接口: init(FilterConfi…
1      工具准备 需要SVN.Maven.JDK.Eclipse.Eclipse M2插件 2      下载源码及发布包 源码在这里:http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_29 发布包在这里:http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.29/bin/ 说明:下载发布包这个步骤是可选的,好处是免得从源码再自行构建,节省时间:另外发布包里的配置文…
一.接口简介: 实现了SingleThreadModel接口的servlet类只能保证在同一时刻,只有一个线程执行该servlet实例的service方法,在tomcat实现中会创建多个servlet实例,即为每个用户创建一个实例,这将导致严重的性能问题. 实现了SingleThreadModel接口的servlet并不能保证是线程安全的,该接口并不能防止servlet访问共享资源造成的同步问题. 在servlet 2.4规范中,singleThreadModel接口已经弃用了,因为他会让程序员…
一.Java类的载入器: 双亲委派模型: 1.JVM提供了三种类型的类加载器:引导类载入器(bootstrap class loader).扩展类载入器(extension class loader).应用程序类载入器(也叫系统类载入器:system class loader): 2.引导类载入器用于引导启动java虚拟机:引导类载入器使用本地代码实现,用来载入jvm需要的类,以及所有java核心类,比如java.lang和java.io等包下的类.扩展类载入器载入标准扩展目录中的类,标准扩展目…
StandardHost及UML类图: 1.StandardHost类是Host接口的默认实现:其继承自ContainerBase类,说明他也是一个容器类,既然是容器类,那肯定也有管道对象PipeLine和阀门,其基础阀门(Basic Valve)的实现类是org.apache.catalina.core.StandardHostValve,ErrorReportValve和ErrorDispatcherValve类作为管道对象中的错误处理阀门: 2.当客户端的请求Request要在Host中查…
Tomcat有多个容器组成,而Container也就是容器与Connecter连接器是Tomcat最核心的两个模块,Connecter连接器接收客户端的请求,并根据客户端的请求传递给Container处理并作出相应. Tomcat中有多个层次的容器对象:Engine.Host.Context.Wrapper,这些容器是有层级关系的. Engine:代表整个Tomcat的Servlet引擎,可以包含一个或多个子容器 Host:    表示一个虚拟主机,包含多个Context Context :表示…
责任链模式:责任链模式可以用在这样的场景,当一个request过来的时候,需要对这个request做一系列的加工,使用责任链模式可以使每个加工组件化,减少耦合.也可以使用在当一个request过来的时候,需要找到合适的加工方式.当一个加工方式不适合这个request的时候,传递到下一个加工方法,该加工方式再尝试对request加工. 在tomcat中容器之间的调用使用的就是责任链的设计模式,当一个请求过来的时候首先是engine容器接受请求,然后engine容器会把请求传到host容器,host…
一. 配置: 在tomcat目录下的conf/Server.xml配置文件中增加如下配置: <!-- Cluster(集群,族) 节点,如果你要配置tomcat集群,则需要使用此节点. className 表示tomcat集群时,之间相互传递信息使用那个类来实现信息之间的传递. channelSendOptions可以设置为2.4.8.10,每个数字代表一种方式 2 = Channel.SEND_OPTIONS_USE_ACK(确认发送) 4 = Channel.SEND_OPTIONS_SYN…