`
alanwu
  • 浏览: 200429 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tomcat容器中的管道和阀门(Pipeline-Valve)

阅读更多
Tomcat的容器定义了四个级别, 全部继承一个公共接口org.apache.catalina.Container,

Engine 1-----* Host 1-----1 Context 1-----* Wrapper

Wrpper包含了每个Servlet, Context包含多个Wrapper, 在Tomcat中是WabApp, 通常放在WAR包。

每个容器都可以添加下一级的子容器和每个子容器都知道上级容器。

每个容器都有一个Pipleline, 每个Pipleline都可以添加不同的Valve和定义一个BaseValve。


下图是每个容器常用的Valve


Wrapper_StandarWrapperValve
|*
1|
Context__StandarContextValve__[AccessLogValve]__[RemoteHostValve]__[RemoteAddrValve]
|*
1|
Host_StandarHostValve_[AccessLogValve]_[RemoteHostValve]_[RemoteAddrValve]
|*
1|
Engine——StandarEngineValve_[AccessLogValve]__[RemoteHostValve]__[RemoteAddrValve]__[SingleSignOn]

request/response就像水一样, 主要的处理工作都在个容器的StandarValve中完成工作。


tomcat的pipeline/valve是标准的责任链模式, 每个级别的容器中pipeline所有的valve都完成动作后会将request/response传到下一个容器的pipeline中的valve, 这样一直传递下去知道Wrapper的BaseValve.
分享到:
评论

相关推荐

    Tomcat中容器的pipeline机制 - coldridgeValley - 博客园1

    在Tomcat的架构中,Pipeline(管道)机制扮演着至关重要的角色,它使得请求在不同层次的Container(容器)间高效流动。本文将深入探讨Pipeline机制以及与其密切相关的Valve(阀门)组件。 首先,Tomcat中的...

    tomcat engine,host,context的管道处理——pipeline

    每个Engine、Host和Context都拥有自己的Pipeline,其中包含了Valve(阀门)组件。Valve就像流水线上的工作站,每个Valve可以执行特定的任务,如登录验证、日志记录、安全管理等。请求和响应会在Pipeline中的每个...

    tomcat管道模式 pipeline与valve详解

    当请求到达时,Tomcat容器首先调用Pipeline的invoke方法,该方法会依次调用Pipeline中的Valve对象,直到所有的Valve都执行完它们的任务,最后才调用基础容器的处理方法。 基础阀门(BasicValve)是Valve的一种实现...

    tomcat工作原理(中文版)

    3. **管道和阀门(Pipeline and Valve)**:容器中的每个层次都有一个Pipeline,该Pipeline包含一系列Valve来执行特定的任务。 #### 三、Catalina结构图 Catalina是Tomcat的核心组件之一,其内部结构如下: 1. **...

    Tomcat架构解析文档.zip

    - **Pipeline** 类似于管道,Valve则相当于管道中的阀门,每个Valve执行特定的任务。请求和响应在Pipeline中通过一系列Valve进行处理,例如请求认证、会话管理、日志记录等。 7. **JNDI(Java Naming and ...

    TOMCAT源码分析(启动框架).pdf

    4. **Pipeline and Valve**:管道和阀门模型是TOMCAT中的一个重要概念,用于处理Web应用程序请求的执行流程。 - **Pipeline**:是一个容器组件,它定义了一系列Valve组件的执行顺序。 - **Valve**:负责执行特定的...

    Tomcat7 核心包 catalina包源码

    Pipeline是请求处理的管道模型,Valve则相当于管道中的阀门,每个Valve执行特定的处理逻辑,串联起来形成整个处理流程。 深入到源码层面,Catalina的核心类`org.apache.catalina.core.StandardServer`负责服务器的...

    tomcat8.0源码

    - Request对象通过Pipeline(管道)传递给容器的各个Valve(阀门)进行处理。 - Pipeline中的Valve可以进行请求过滤、认证、会话管理等操作。 - 最终Request到达Servlet,调用Servlet的`service`方法处理请求。 ...

    Tomcat源代码学习研究

    - **装饰者模式**:用于动态添加或改变Servlet的功能,例如Pipeline(管道)机制,允许插入自定义Valve(阀门)来增强功能。 3. **启动流程** - **Catalina**:Tomcat的主要启动类,负责初始化Server对象,进而...

    S03-tomcat源码调试以及架构学习1

    3. **Pipeline(管道)**: 请求被传递到一个包含多个Valves(阀门)的管道,每个Valve执行特定的任务,如认证、URL重写、会话管理等。 4. **Request Processor(请求处理器)**: 当请求到达Catalina层,Request和...

    tomcat源码学习并添加注释学习

    Pipeline则是一系列Valve(阀门)的链,每个Valve执行特定任务,如身份验证、请求解析等。 7. **容器管理**:Tomcat使用了基于XML的配置文件来管理各个容器的配置,如server.xml、context.xml等。开发者可以通过...

    mytomcat.zip

    Valve类似于管道中的阀门,可以控制请求的流向和处理方式。手写Tomcat时,可以尝试添加自己的Valve实现特定功能。 通过这个手写Tomcat项目,我们可以逐步理解Tomcat内部的工作流程,比如请求的接收、分发、处理和...

    Tomcat源码研究

    然后,请求会被传递到`Pipeline`(管道),这是一个基于链表的数据结构,包含了多个`Valve`(阀门)。每个阀门都可以对请求进行处理,如认证、日志记录、URL重写等。最后,请求会到达`ContainerBase`的`invoke()`...

    cat connectors 4.1.24源代码

    3. **管道(Pipeline)**和阀门(Valve):管道是请求和响应处理的流程控制结构,阀门则是管道中的处理单元,可以添加自定义逻辑,如认证、日志记录等。 4. **AJP协议**:用于在Web服务器和Tomcat之间高效地传输数据,...

    tomcatSource-learning:tomcat原始码学习

    4. **连接器与管道**:Coyote连接器负责接收和响应HTTP请求,而管道(Pipeline)和阀门(Valve)的概念则用于定义处理请求的流程,允许自定义中间件。 5. **线程模型**:Tomcat如何管理线程来处理并发请求,包括...

    tomcat7-research:tomcat原始码学习

    Coyote Connector负责接收和发送网络数据,而管道(Pipeline)和Valve(阀门)的概念则用于处理请求和响应的流程控制。理解这部分源码有助于优化请求处理速度。 6. **安全性**: Tomcat支持多种认证机制,如Basic...

Global site tag (gtag.js) - Google Analytics