Tomcat源码剖析

        目前的每个条目,只对tomcat简单说明了下,后面会根据每点开一篇进行详细说明,包括对源码的分析。

1.Tomcat是什么   

        Tomcat是一个高性能的web服务器,支持HTTP,AJP协议,支持nio,bio,aio等线程模型。

2.Tomcat的顶层结构

        根据con/Server.xml文件,可知大体组件结构如下,Server为Tomcat的最顶层容器,Service包含Container和Connetor,Connector用于处理连接相关的事,并提供Socket和request和response的转换。Connector中抽象出Endpoint,Accepter, Processor,ConnectionHandler,Adaptor(默认实现为CoyotoAdaptor,适配Container)等组件。他们之间的关系如下图:

        Connector整体分层结构和协助组件如下:

        下图为官网tomcat整体结构图:

https://static.iocoder.cn/64b2869ae3128840ec41628715cb7478

3.Tomcat是如何加载和启动的?

        Tomcat的加载和启动等生命周期由顶层接口LifeCycle控制。        

4.Tomcat的监听机制

        Tomcat在事件传播使用了典型的观察者模式,在StandardService等各容器创建时将对应的监听器LifecycleListener注册进当前容器中,当容器发生各类事件LifecycleEvent时,通知各监听器对感兴趣的时间进行处理。监听器LifecycleListener的UML图如下:

https://static.iocoder.cn/62922aab616c979dcdc9968a5b8b05d4

5.Tomcat对用户一次请求如何处理?

6.Tomcat如何实现容器的动态加载?

        动态加载是基于Tomcat的监听和时间通知特性,举例来说,StandardHost中的监听器HostConfig,根据LifecycleEvent处理对应的事件,包括动态发现XML 文件描述符、WAR 包、文件目录。并通过父容器BaseContaineraddChild()添加父子容器的关系,并传播ADD_CHILD_EVENT事件,通知监听器WebConfig加载过滤器Filter,监听器ListenerSevletContext中。

7.Tomcat中涉及的设计模式?

        观察者模式(监听器的应用,对各生命周期事件进行处理)。

8.Tomcat各大组件的使用方式?

9.Tomcat的扩展点?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值