1
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配合流水线使用。这里用到的设计模式是责任链模式。

扩展:有用到责任链模式的地方

  1. spring的aop实现
  2. netty的多个handler实现业务
  3. tomcat的pipeline和valve
tomcat打破双亲委派机制

为什么要打破双亲委派机制
tomcat作为容器,要部署很多的项目,众多的项目都有自己的依赖,可能会出现两个项目依赖了同一个jar包,但是版本不同。版本不同可能会导致同一个类中方法不同,如果实用传统的jvm双亲委派机制就会出问题了。调用某个jar包的方法不对,或者找不到方法问题就出现了。
所以需要把项目依赖隔离,打破双亲委派机制。


李沁春
17 声望1 粉丝

喜欢运动,骑行、打羽毛球、打乒乓球等。也喜欢打桌游,玩狼人杀、剧本杀等烧脑游戏。