Tomcat源码解析8——Context容器

8. Context容器

Context容器代表一个WebApp。

8.1Context的配置文件

Context在解析server.xml文件的时候就会被创建,然后在web应用的/META-INF/context.xml文件中进行属性的添加。

而Tomcat源码自带的conf/下的context.xml是配置所有context容器的属性。

在这里插入图片描述

8.2 Wrapper——包装器

Wrapper是最小的容器,一个Wrapper对应一个Servlet。

8.3 Realm,AccessLog

在Engine和Host中讲过。

8.4 Manager——会话管理器

用于管理Web容器会话的。

8.5 DirContext 目录上下文

JNDI:(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,

DireContext能让Tomcat更快的访问到想要的文件。

8.6 安全认证

查看后续笔记(TODO)

8.7 JarScanner——Jar扫描器

用来扫描Jar包的工具

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FDjNaHpN-1619271987286)(image-20210422163057119.png)]

8.8 过滤器

在Web应用的web.xml文件中配置过滤器只会在此Web应用中有效,在tomcat的conf/下的web.xml中配是全部的web应用都有这个过滤器。

过滤器是在Context中存在的,但是是Wrapper去执行的

1.FilterDef类

这个类是对应xml文件中的属性的。

<!-- Filter,过滤器 -->
    <filter>
        <!-- filter名,随便起 -->
        <filter-name>AdminFilter</filter-name>
        <!-- 实现类所在目录 -->
        <filter-class>cn.kihyou.b2c.filter.AdminFilter</filter-class>
        <!-- 初始化参数 -->
        <!-- 设置字符集,charset:UTF-8 -->
        <init-param>
            <!-- 参数名 -->
            <param-name>charset</param-name>
            <!-- 参数值 -->
            <param-value>UTF-8</param-value>
        </init-param>

        <!-- 设置内容类型及其字符集,contentType:text/html;charset=UTF-8 -->
        <init-param>
            <param-name>contentType</param-name>
            <param-value>text/html;charset=UTF-8</param-value>
        </init-param>
    </filter>

    <!-- filter的映射 -->
    <filter-mapping>
        <!-- 对应的filter名 -->
        <filter-name>AdminFilter</filter-name>
        <!-- 要进行拦截过滤的目录 -->
        <url-pattern>/web/admin/*</url-pattern>
    </filter-mapping>

    <session-config>
        <!-- 超时时间,单位:分钟 -->
        <session-timeout>30</session-timeout>
    </session-config>

2.ContextFilterMaps

这个类是StandardContext的内部类。

用于保存过滤器映射关系,里面有个private FilterMap[] array ,这个是用来存储映射关系的。

3.ApplicationFilterConfig

用于管理web应用程序首次启动时实例化的过滤器实例。

以上三个是Context容器的过滤器模块所包含的。

8.9 Mapper——映射器

具体内容请看后续笔记

8.10 webappLoader ——Web应用载入器

利用各自独立的Web应用载入器可以使不同的Web应用之间做到相互隔离。

8.11 ApplicationContext

它实现了ServletContext接口

构建了一个Context容器环境。 可以通过Servlet访问Context的各种资源,如获取上下文getServlet Context()

实际上所用的是 ApplicationContextFacade外观类。防止重要的运行属性和内部方法暴露给Web开发人员。被修改后可能会出现运行bug。

8.12 InstanceManager实例管理器
8.13 ServletContainerInitializer——初始化器

等等。。。

说个最重要的,Context监听器

8.14 监听器

Context有四个监听器

ContextConfig,

TldConfig, 负责对TLD标签配置文件的相关处理

NamingContextListener,负责管理命名资源

MemoryLeakTrackingListener.防止内存泄露的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Tomcat源码解析是对Tomcat服务器的源代码进行分析和解读的过程。通过对Tomcat源码的研究,可以深入了解Tomcat的整体架构、连接器的内部结构、容器分析以及Tomcat的启动流程等方面的内容。 Tomcat的整体架构包括配置文件server.xml的分析和连接器的内部结构。配置文件server.xml是Tomcat的主要配置文件,通过对其进行分析可以了解Tomcat的各个组件和配置项的作用。连接器是Tomcat的核心组件之一,负责处理客户端请求并将其转发给相应的容器进行处理。 Tomcat的启动流程是通过实现Lifecycle接口的各个组件来完成的。在启动过程中,Tomcat会按照一定的顺序初始化和启动各个组件,确保它们能够正常工作。具体的启动流程可以通过阅读源码中的相关方法和注释来了解。 Tomcat底层使用了Netty来实现IO相关的操作,但与Netty有所区别,因为Tomcat对部分处理进行了封装。通过对Tomcat源码的学习,可以了解Tomcat底层的实现逻辑、各个组件的配合方式以及各种设计模式的交互。 如果你对Tomcat源码解析感兴趣,可以参考提供的源码和相关文章进行深入研究。通过深入研究Tomcat源码,你可以更好地理解Tomcat的工作原理和内部机制。 #### 引用[.reference_title] - *1* [Tomcat源码分析](https://blog.csdn.net/sun_code/article/details/123554480)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [tomcat线程模型-源码解析](https://blog.csdn.net/qq_16498553/article/details/126080174)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值