Tomcat源码分析:6——Engine容器

本文深入探讨了Tomcat的Engine容器,作为最大的容器,Engine包含Host、AccessLog、Pipeline、Cluster、Realm和LifeCycleListener等组件。Host表示虚拟主机,AccessLog记录访问日志,Pipeline连接各个容器,Cluster涉及Engine的集群配置,而Realm负责用户认证,LifeCycleListener则在生命周期事件中起到日志记录的作用。EngineConfig监听器在启动和停止时仅输出日志信息。

6.Engine容器

Tomcat一共有四个容器,Engine是最大的。

Engine是全局的引擎容器,它的标准实现是StandardEngine

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kBYdkhSn-1619271794419)(在这里插入图片描述
)]

Engine都包括什么呢?

6.1 Host——组件

Host是Engine的子容器,表示为一个虚拟主机。

6.2 AccessLog—— 访问日志

记录客户端访问记录的。

6.3 Pipeline——管道

Tomcat每个容器都有自己独立的PipeLine,通过PipeLine可以将四个级别的容器连起来。

该图讲解的很明白,来自书《Tomcat内核设计剖析》。

在这里插入图片描述

PipeLine的实现类

在这里插入图片描述

详解请看后面笔记。

6.4 Cluster——Engine集群

集群:集群通信系统是一种用于集团调度指挥通信的移动通信系统,主要应用在专业移动通信领域。该系统具有的可用信道可为系统的全体用户共用,具有自动选择信道功能,它是共享资源、分担费用、共用信道设备及服务的多用途、高效能的无线调度通信系统。

Tomcat主要有两个集群,Host与Engine。

关于集群参考笔记:(TODO)

6.5 Realm——域

Realm对象就是一个存储了用户、密码及权限等的数据对象,他的存储方式可以是内存、xml、数据库等。作用是配合Tomcat实现资源认证模块。详细内容参见后续笔记。

6.6 LifeCycleListener——生命周期监听器

第一次debug到Engine的生命周期监听器EngineConfig的时候非常疑惑,为什么只做了一件输出Log日志的事?

下面是EngineConfig的lifecycleEvent的实现方法。

@Override
public void lifecycleEvent(LifecycleEvent event) {

    // Identify the engine we are associated with
    try {
        engine = (Engine) event.getLifecycle();
    } catch (ClassCastException e) {
        log.error(sm.getString("engineConfig.cce", event.getLifecycle()), e);
        return;
    }

    // Process the event that has occurred
    if (event.getType().equals(Lifecycle.START_EVENT))
        start();
    else if (event.getType().equals(Lifecycle.STOP_EVENT))
        stop();

}


// -------------------------------------------------------- Protected Methods


/**
 * Process a "start" event for this Engine.
 */
protected void start() {

    if (engine.getLogger().isDebugEnabled())
        engine.getLogger().debug(sm.getString("engineConfig.start"));

}


/**
 * Process a "stop" event for this Engine.
 */
protected void stop() {

    if (engine.getLogger().isDebugEnabled())
        engine.getLogger().debug(sm.getString("engineConfig.stop"));

}

可以看出来这个监听器只是输出了一点日志,仅此而已。

后来才想明白,因为Tomcat只用一个Engine容器,然后这个容器已经在用digester解析server.xml等xml文件的时候建立并初始化了。

6.7 Log——日志

具体内容后续笔记推出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值