Tomcat内核详解(八):Host容器

本文详细介绍了Tomcat容器的组成结构,包括Host容器的功能及其包含的Context容器、AccessLog组件、Pipeline组件、Cluster组件、Realm组件、HostConfig组件和Log组件。深入探讨了Context容器如何实现Web应用的语义及Servlet和JSP规范,AccessLog组件如何记录客户端请求访问日志,Pipeline组件如何串联不同级别的容器,Cluster组件如何提供集群会话和部署,Realm组件如何存储用户、密码和权限信息,以及HostConfig组件如何实现Web应用的部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个Servlet引擎可以包含若干个Host容器,它是根据URL地址中的主机部分抽象的,一个Servlet引擎可以包含若干个Host容器,而一个Host容器可以包含若干个Context容器、AccessLog组件、Pipeline组件、Cluster组件、Realm组件、HostConfig组件和Log组件。

1. Web应用——Context

每个Host容器保安若干个Web应用(Context),对于Web项目来讲,其结构相对比较复杂,而且包含很多机制,Tomcat需要对它的结构进行解析,同时还需要具体实现各种功能和机制,这些复杂的工作就交给了Context容器。Context容器对应实现了Web应用包含的语义,实现了Servlet和JSP规范;

 

2. 访问日志——AccessLog

Host容器里面的AccessLog组件负责客户端请求访问日志的记录。Host容器的访问日志作用范围是该虚拟主机的所有客户端的请求访问,不管是哪个应用都会被该日志组件记录。

 

3. 管道——Pipeline

在Tomcat中,它是将不同级别的容器串联起来的通道,当请求进来的时候就通过管道进行流转处理。

4.Host集群——Cluster

它提供了Host级别的集群会话和集群部署;

5.Host域——Realm

Realm对象其实就是一个存储了用户、密码以及权限等的数据对象,它的存储方式可能是内存、xml文件或者数据库等。它的作用是配合Tomcat实现资源认证模块。

Tomcat中有多个级别的Realm域,这里的Realm域是Host容器级别,在<Host>节点中配置;

6.生命周期监听器——HostConfig

在Tomcat启动的时候有两个阶段将Context添加到Host中。

第一种方式:用Digester框架解析server.xml

需要先将Context节点配置到server.xml的Host节点下,缺点就是将应用配置与Web服务器耦合在一起,而且对server.xml配置的修改不会立即生效,除非重启Tomcat。

第二种方式:在server.xml加载解析完之后再在特定的时刻寻找指定的Context配置文件。这时候已经将应用配置解耦出Web服务器。

HostConfig监听器当START_EVENT事件发生的时候则会执行Web应用部署加载动作。

Web应用有三种部署类型:

  • Descriptor描述符类型
  • WAR包类型
  • 目录类型

6.1 Descriptor描述符类型

Descriptor描述符的部署是通过对指定部署文件解析之后进行部署的。部署文件会按照一定的规则存放,一般为%CATALINA_HOME%/conf[EngineName]/[HostName]/Web项目名.xml,此文件的大致内容为<Context docBase=”web应用的绝对路径”reloadable=”true”>  reloadable=”true”表示/WEB-INF/classes/和/WEB-INF/lib改变的时候会自动的重新加载,如果一个Host包含多个Context则可以配置多个XML描述文件。为了优化多个应用项目部署时间,HostConfig监听器引入了使用线程池和Future优化部署耗时。;

6.2 WAR包类型

WAR包类型部署方式是直接读取%CATALINA_HOME%/webapps目录下所有以war包形式打包的web项目,然后根据war包的内容生成Tomcat内部需要的各种对象。为了优化多个应用项目部署时间,HostConfig监听器引入了使用线程池和Future优化部署耗时。;

6.3目录类型

目录类型部署方式是直接读取%CATALINA_HOME%/webapps目录下所有目录形式的Web项目,与前面两种一样,HostConfig监听器引入了使用线程池和Future优化部署耗时。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值