tomcat的模型结构
图片
tomcat的核心组件
- server:统一管理所有的service
- service:统一管理所有的connector和container
- Connector:连接器、一个连接器监听一个端口,也就是我们http访问的端口。
- Container容器:Container容器包含四个子容器,Engine、Host、Context、Wrapper。
Container
Container容器包含上面说的四个子容器,这四个子容器又分别是父子容器关系。
- Engine:tomcat只有一个Engine,engine负责为特定的请求URL
- 选择一个Context容器。接收一个或者多个连接器的request,并且讲response返回给连接器,最终传输回客户端。
- Host:虚拟主机,不同的域名对应。包含Context
- Context:应用上下文、应用程序。包含Wrapper
- Wrapper:Wrapper代表一个Servlet,它负责管理一个Servlet,包括Servlet的装载、初始化、执行以及资源回收。
Pipeline和valve
每一个容器都有一个pipeline,valve是阀门的意思,valve配合流水线使用。这里用到的设计模式是责任链模式。
扩展:有用到责任链模式的地方
- spring的aop实现
- netty的多个handler实现业务
- tomcat的pipeline和valve
tomcat打破双亲委派机制
为什么要打破双亲委派机制
tomcat作为容器,要部署很多的项目,众多的项目都有自己的依赖,可能会出现两个项目依赖了同一个jar包,但是版本不同。版本不同可能会导致同一个类中方法不同,如果实用传统的jvm双亲委派机制就会出问题了。调用某个jar包的方法不对,或者找不到方法问题就出现了。
所以需要把项目依赖隔离,打破双亲委派机制。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。