《how tomcat work》 搬运工 Chapter 11:StandardWrapper
2015-09-21 09:51
453 查看
tomcat 4和5中有四种container,engine,host,context,wrapper,之前已经简单介绍过自己编写的simpleContext,simpleWrapper。这章节就是介绍catalina的StandardWrapper。
首先wrapper是代表一个servlet,所以,wrapper的作用是,servlet类的加载,servlet的信息,还有进入servlet的fiter的信息,还有fiter的加载,fiter的chain。
1.servlet可以继承javax.servlet.SingleThreadModel(STM)接口
这个可以保证一个servlet实例只会出现在一个线程中。
但是并不能保证线程安全,如果servlet中使用到全局变量,还是会出现线程执行出错的问题。
这是通过servlet池实现的。
如果没有继承javax.servlet.SingleThreadModel接口的,如果已经存在了servlet实例就直接返回。
2.servlet的加载
先调用init方法,传递javax.servlet.ServletConfig的实例。再调用load方法
因为catalina支持jsp类的加载,所以会检查请求的页面是否jsp,如果是,则从父container,也就是context中获取加载jsp的wrapper,再获取用于加载jsp的servlet类的类名。
在加载servlet会触发一些事件监听函数。
3.ServletConfig
StandardWrapper除了继承 Wrapper interface接口,还继承了javax.servlet.ServletConfig接口。
4.StandardWrapperValve
负责执行servlet的filter,和执行service方法。
创建filter,通过filterDef类的实例的信息来创建,ApplicationFilterConfig类也是通过filterDef类的实例来创建
ApplicationFilterChain来执行各种filter
首先wrapper是代表一个servlet,所以,wrapper的作用是,servlet类的加载,servlet的信息,还有进入servlet的fiter的信息,还有fiter的加载,fiter的chain。
1.servlet可以继承javax.servlet.SingleThreadModel(STM)接口
这个可以保证一个servlet实例只会出现在一个线程中。
但是并不能保证线程安全,如果servlet中使用到全局变量,还是会出现线程执行出错的问题。
这是通过servlet池实现的。
如果没有继承javax.servlet.SingleThreadModel接口的,如果已经存在了servlet实例就直接返回。
2.servlet的加载
先调用init方法,传递javax.servlet.ServletConfig的实例。再调用load方法
因为catalina支持jsp类的加载,所以会检查请求的页面是否jsp,如果是,则从父container,也就是context中获取加载jsp的wrapper,再获取用于加载jsp的servlet类的类名。
在加载servlet会触发一些事件监听函数。
3.ServletConfig
StandardWrapper除了继承 Wrapper interface接口,还继承了javax.servlet.ServletConfig接口。
public ServletContext getServletContext() public java.lang.String getServletName() public String getName() public void addInitParameter(String name, String value) public String getInitParameter(String name) public String findInitParameter(String name) public java.util.Enumeration getInitParameterNames() public Enumeration getInitParameterNames()
4.StandardWrapperValve
负责执行servlet的filter,和执行service方法。
创建filter,通过filterDef类的实例的信息来创建,ApplicationFilterConfig类也是通过filterDef类的实例来创建
ApplicationFilterChain来执行各种filter
相关文章推荐
- tomcat 访问日志及ip限制
- tomcat日志清理及logrotate配置
- Intellij idea14.4 新建maven web项目并与tomcat服务集成
- Tomcat源码分析-- 一次完整请求的里里外外
- Tomcat源码分析 -- 架构
- Intellij idea 14.4创建web工程并与tomcat服务集成
- Centos下安装jdk8、tomcat8
- CentOS tomcat服务器普通用户不能占用80端口问题
- MyEclipse2015配置Tomcat方法
- A child container failed during start, tomcat的阿帕奇问题
- solr环境的搭建之windows和tomcat
- Eclipse下Java 开发环境搭建(JDK+Maven+Subversion+Tomcat)
- Tomcat详细用法学习(五)
- 整合apache和tomcat构建Web服务器
- Tomcat类加载机制概述
- 应用Tomcat的WebappClassLoader加载指定目录的jar文件
- tomcat源码分析 StandardServer初始化过程
- CentOS 安装tomcat 7
- 配置Tomcat服务
- Tomcat详细用法学习(四)