tomcat学习笔记之servlet 容器

一、servlet 容器用来处理请求servlet资源、为客户端封装Response 对象的模块web

二、tomcat 容器分四种:apache

  • Engine:整个Catalina servlet 引擎
  • Host:包含一个或多个Context 容器的虚拟主机
  • Context:表示一个web应用程序
  • Wrapper:表示一个独立的servlet

三、Container 接口tomcat

  • Engine接口,标准实现类 StandardEngine
  • Host接口,标准实现类 StandardHost
  • Context接口,标准实现类 StandardContext
  • Wrapper接口,标准实现类 StandardWrapper
  • 四个借口都继承至Container 接口
  • 实现类都继承至ContainerBase 抽象类 
  • 在org.apache.catalina.core包里面

四、一个容器能够有0个或多个低级子容器app

  • Engine > Host >Context > Wrapper
  • 包含关系 不能够倒置

五、容器能够包含支持的组件:server

  • 载入器、记录器、管理器、领域、资源等
  • loader、logger、manager、realm、Resource

六、部署应用时,tomcat 管理员能够经过编辑配置文件(server.xml)来决定使用哪一种容器xml

  • 这是经过引入容器中的管道(pipeline)和阀(value)的集合来实现的

七、管道任务对象

  • Pipeline接口
  • Value 接口
  • ValueContext 接口
  • Contained 接口
  • 在org.apache.catalina包里面

八、管道包含该servlet 容器将要调用的任务继承

  • 一个阀表示一个要具体执行的任务
  • servlet 容器的管道中,有一个基础阀
  • 能够添加任意数量的阀(数量不包括基础阀)
  • 能够编辑tomcat 配置文件动态添加阀

  • 管道就像过滤器链同样传递Request对象和response对象
  • 阀相似过滤器(是Value  接口的实例)
  • 基础阀最后一个执行
  • 一个servlet 容器有一条管道
  • 当调用容器的invoke 方法时,容器会将处理工做交由管道完成
  • 管道调用第一个阀开始处理
  • 管道处理伪代码:

九、管道必须保证添加到其中的全部阀和基础阀都被调用一次接口

  • 经过建立ValueContext 接口实例实现的
  • ValueContext是管道的内部类实现,因此ValueContext 接口能够访问到管道全部成员
  • ValueContext 最重要方法

  • 建立ValueContext 实例后,实例会调用 invokeNext 方法
  • 先调用第一个阀,执行完后调用后面的阀
  • ValueContext 实例将自身传递给阀,每一个阀都能调用ValueContext 实例的invokeNext 方法
  • 一个实现了ValueContext 接口的内部类 StandardPipelineValueContext

十、Contained 接口ip

  • 阀能够选择是否实现该接口
  • 接口实现类可使用接口中的方法,至多与一个servlet 容器相关联

十一、Wrapper 级的servlet 容器

  • 表示一个独立级的servlet 定义
  • Wrapper 接口实现类负责管理其基础servlet 类的servlet 周期
  • 调用servlet 的init、service、destory方法
  • 最低级servlet 容器,不能添加子容器
  • 重要方法load 、allocate
  • load 方法载入并初始化servlet 类

十二、Wrapper 应用程序

核心类 SimpleWrapper 

  • 包含一个Pipeline 实例
  • Pipeline 实例包含一个基础阀(SimpleWrapperValue)和两个额外阀
  • 两个额外阀:ClientIPLoggerValue、HeaderLoggerValue
  • 使用一个Loader 实例载入servlet 类
  • Wrapper 实例的基础阀调用servlet 实例的 service() 方法

1三、Context 应用程序

  • 当应用程序中有多个Wrapper 实例时,须要使用映射器
  • 映射器是组件,帮助servlet 容器,选择一个子容器来处理servlet 请求
  • 映射器仅仅存在于tomcat4中,tomcat5使用了别的方法
  • 映射器实现 org.apache.catalina.Mapper 接口
  • 一个映射器支持一个请求协议
  • getProtocol 方法负责得到 该映射器处理的协议
  • map 方法返回 负责处理某个特定请求子容器的实例
相关文章
相关标签/搜索