容器:
四种容器:Engine (引擎), Host(主机), Context(上下文), 和 Wrapper(包装器)
Catalina:
Engine:表示整个 Catalina 的 servlet 引擎
· Host:表示一个拥有数个上下文的虚拟主机
· Context:表示一个 Web 应用,一个 context 包含一个或多个 wrapper
· Wrapper:表示一个独立的 servlet
添加容器:addChild(Container child)
阀门处理pipeline,ValveContext 的 invokeNext 方法
生命周期:Lifecycle
Lifecycle设计模式:接口启动管理对象,同时增加对象监听
tomcat之加载器:
创建org.apache.catalina.Loader 接口实现,同时实现Reloader接口,当类变更时重新加载。
tomcat有自己的servlet类加载器,直接使用系统加载器会加载任何类库,引起安全隐患。
java类加载:bootstap,扩展,系统(委托模型)
SPI的加载动作:破坏双亲委托,通过线程类加载器切换上下文进行加载
tomcat的类加载:从最下层开始加载,不会双亲委托,如果父加载器想要加载子加载器中的类,可以通过线程上下文加载器去实现
参考资料:https://www.jianshu.com/p/3999de71e02f