目前的每个条目,只对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整体结构图:
3.Tomcat是如何加载和启动的?
Tomcat的加载和启动等生命周期由顶层接口LifeCycle控制。
4.Tomcat的监听机制
Tomcat在事件传播使用了典型的观察者模式,在StandardService等各容器创建时将对应的监听器LifecycleListener注册进当前容器中,当容器发生各类事件LifecycleEvent时,通知各监听器对感兴趣的时间进行处理。监听器LifecycleListener的UML图如下:
5.Tomcat对用户一次请求如何处理?
6.Tomcat如何实现容器的动态加载?
动态加载是基于Tomcat的监听和时间通知特性,举例来说,StandardHost中的监听器HostConfig,根据LifecycleEvent处理对应的事件,包括动态发现XML 文件描述符、WAR 包、文件目录。并通过父容器BaseContainer的addChild()添加父子容器的关系,并传播ADD_CHILD_EVENT事件,通知监听器WebConfig加载过滤器Filter,监听器Listener,Sevlet至Context中。
7.Tomcat中涉及的设计模式?
观察者模式(监听器的应用,对各生命周期事件进行处理)。
8.Tomcat各大组件的使用方式?
9.Tomcat的扩展点?