tomcat源码阅读之StandardWrapper解析
一、UML图:

1、Tomcat中Wrapper代表一个独立的servlet实例,StandardWrapper类是Wrapper接口的标准实现类,StandardWrapper类还实现了SelvletConfig接口,同时其从ContainerBase类继承过来,表示他是一个容器,只是他是最底层的容器,不能再含有任何的子容器了,且其父容器只能是context;
2、Valve接口代表阀门实现,StandardWrapperValve作为StandardWrapper的Basic Valve阀门的标准实现类,从ValveBase类继承过来;
3、StandardWrapper有一个管道Pipeline实例,pipeline中有一个Basic Valve阀门,就是StandardWrapperValve类的实例;
二、调用流程:

1、从上图的流程可以看到Wrapper.invoke方法会调用pipeline.invoke方法,pipeline.invoke循环调用管道里面所有的valve阀门,最后再调用Basic Valve阀门,而Wrapper的Basic Valve阀门是StandardWrapperValve类的实现;
2、StandardWrapper类中最重要的两个方法是allocate和loadServlet,实现流程如下:


3、StandardWrapperValve的invoke方法实现流程如下:

tomcat源码阅读之StandardWrapper解析的更多相关文章
- SpringMVC源码阅读:视图解析器
		1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring ... 
- SpringMVC源码阅读:异常解析器
		1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring ... 
- Tomcat源码阅读(二)初始化
		近来,我开始阅读tomcat的源码,感觉还挺清晰易懂:为了方便理解,我参考了网上的一些文章,把tomcat的组成归纳一下:整个tomcat的组成如下图所示: Tomcat在接收到用户请求时,将会通过以 ... 
- tomcat源码阅读
		1 工具准备 需要SVN.Maven.JDK.Eclipse.Eclipse M2插件 2 下载源码及发布包 源码在这里:http://svn.apache.org/repos/a ... 
- tomcat源码阅读之过滤器
		一.Servlet过滤器: 1.介绍: Servlet过滤器本身并不生成请求和响应对象,它只提供过滤作用. Servlet过滤器能够在Servlet被调用之前检查Request对象,修改Request ... 
- tomcat源码阅读之SingleThreadModel
		一.接口简介: 实现了SingleThreadModel接口的servlet类只能保证在同一时刻,只有一个线程执行该servlet实例的service方法,在tomcat实现中会创建多个servlet ... 
- tomcat源码阅读之载入器(Loader)
		一.Java类的载入器: 双亲委派模型: 1.JVM提供了三种类型的类加载器:引导类载入器(bootstrap class loader).扩展类载入器(extension class loader) ... 
- tomcat源码阅读之Catalina和Bootstrap解析
		一.Cataling类分析: 1.Catalina类是启动类,用于启动或者关闭Server对象,它包含一个Digester对象,用于解析tomcat配置文件:conf/server.xml;调用pro ... 
- tomcat源码阅读之Server和Service接口解析
		tomcat中的服务器组件接口是Server接口,服务接口是Service,Server接口表示Catalina的整个servlet引擎,囊括了所有的组件,提供了一种优雅的方式来启动/关闭Catali ... 
随机推荐
- ASP.NET MVC 习惯
- js实现欧几里得算法
			概念 在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法. 证明 首先假设有两个数a和b,其中a是不小于b的数,记a被b除的余数为r,那么a可 ... 
- mysql日期时间类型总结
			MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ------------ ---- ... 
- Mysql 存储过程-转载
			存储过程简介 SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储 ... 
- struts2 正确配置通配符方式访问,报错解决
			今天遇到正确配置通配符访问action的方法,但是还是报错,原因struts 2.3 以后会内部会验证是否允许该方法,而我用的刚好是2.5的版本 要action配置中加上<allowed-met ... 
- ESET免费申请
			Eset 免费试用30天申请地址 http://www.comss.info/list.php?c=NOD32 https://secure.eset.ie/msv/evaluate/evaluate ... 
- 高版本的jdk编译过的项目移到低版本的JDK的eclipse中出错的问题
			由于2台电脑安装的jdk版本不一样,导致从一台电脑移动项目到另一台电脑上时,运行出现了错误,错误信息如下: 主要是原先项目运行的JDK版本为1.8, 而要移过去的电脑的jdk是1.7的,首先已经把bu ... 
- 源代码管理:SVN源代码管理器在ASP.NET VS中的使用注意事项
			一共有三个软件 1.ASP.NET下SVN有三个是不受管理的,bin文件夹,obj文件夹,.user类型文件,位置在TortoiseSVN的Settings下面的Subversion下的[Global ... 
- UITableViewCell的高度与UILabel自适应
			UITableViewCell内部只放了一个UILabel,Cell的高度随着UILabel内容的高度变化而变化,可重写UITableView的委托方法动态调整高度,还要设置UILabel.numbe ... 
- Intellij Idea2016.3 svn服务器拉取代码
			1.修改idea的默认配置,取消SVN设置里的两个勾 2.拉取代码 3.输入SVN仓库的地址,然后checkout 即可 
