Tomcat源码分析:6——Engine容器
2021/4/24 22:25:44
本文主要是介绍Tomcat源码分析:6——Engine容器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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——日志
具体内容后续笔记推出
这篇关于Tomcat源码分析:6——Engine容器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性
- 2024-05-29哪些无用敏捷指标正在破坏敏捷转型?
- 2024-05-29鸿蒙原生应用再新丁!新华社 入局鸿蒙
- 2024-05-29设计模式 之 迭代器模式(Iterator)