Tomcat源码阅读之StandardEngine分析与Valve的设计

本文深入探讨Tomcat的StandardEngine组件,解析其如何管理Container和Connector对象,以及Engine与Valve的关系。Valve作为请求处理链路的核心,其接口设计包含一个处理请求的invoke方法和应对Comet事件的event方法。Engine继承Container接口,并通过addChild方法确保仅能添加Host对象。StandardEngine在构造时会设置基本Valve为StandardEngineValve,其invoke方法主要负责将请求转发给对应Host的Pipeline处理。
摘要由CSDN通过智能技术生成

在上一篇的文章中看了StandardService的实现。。。这里可以将它要做的事情总结如下:

(1)管理其拥有的container对象,以及其拥有的connector对象,同时service只能有一个container对象,可以拥有多个connector对象。。。

(2)StandardService对象同时还要处理request的map问题,它有maplistener和mapper,maplistener用于监听container对象,从而增加mapper里面的信息。。。


上面说service只能有一个Container对象,这个container对象其实一般就是Engine对象,而Engine对象一般都是使用StandardEngine的。。。但是在具体的分析StandardEngine之前呢,先来看看Valve的设计。。。

在以前分析Container的时候提到过,每个container对象都有一个pipeline对象用于处理请求,而pipeline其实则是一个valve的链表,它是用valve对象来具体的处理请求的。。。

这里就先来看看valve接口的设计吧:

//value对象是与container相关联的处理请求的组件,一系列的value组成了pipeline
public interface Valve {

    public Valve getNext();  //返回pipeline的下一个value对象,在pipeline上面,valve对象组成了一个链表

    public void setNext(Valve valve);  //设置下一个value对象

    //执行一些周期的工作
    public void backgroundProcess();

    //处理request与response
    public void invoke(Request request, Response response)
        throws IOEx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值