tomcat架构学习

tomcat架构学习


tomcat重要的概念有Server Service Connector Container Engine Host Context Wrapper

组件说明
Server一个Tomcat服务器中只能有一个Server
Service一个Server下可以有多个Service
Connector一个Service可以有多个Connector,不同的Connector实现了不同的协议,如HTTP与AJP,这两个协议是Tomcat中模式实现的协议。Connector还负责Socket的建立,使用ProtocolHandler处理字节数据,封装request与response对象,然后使用Adaptor将Request与Response封装成HTTPRequest与HTTPResponse对象。协议处理器包含了对各类IO框架的支持,常用的为Nio(异步不阻塞) Apr Bio(Jio,阻塞)
Contaier一个Service可以包含多个容器,容器是Engin,Host,Context,Wrpper顶层封装,也就是说这四个是Container的子容器,在代码层面他们都继承了Container类
EngineTomcat默认实现的引擎为Catalina,当然你也可以实现自己的引擎
HostHost就是字面意思,表示不同的主机,也就是在HTTP/1.1中的host头指定的内容,Tomcat根据该标头将请求发送给不同的StandardHost容器处理
Context一个Context就是一个应用,在Tomcat的模式Host中也就是模式的webapps目录下,一个目录就是一个应用
WrapperWapper是对Servlet的封装,一个Servlet就是一个Wapper

四个子容器在调用的时候使用的是责任链模式,每个容器通过Pipline管道串联起来,每个Pipline中包含了一系列的Valve(阀门),Tomcat模式每个容器实现了一个标准的Valve,分别为StandardEnginValve,StandardHostValve,StandardContextValve,StandardWrapperValve,这四个管道在每个容器中放在各自的顶层被最后一个调用,负责串联下一个容器的,这四个管道中的invoke方法负责调用下一个容器的的第一个Valve
在这里插入图片描述
就这样四个容器被串联起来,最后的StandardWrapperValve负责将请求与响应传递到FilterChain,执行一系列过滤器。
在这里插入图片描述
我们也可以在Tomcat的server.xml文件中在各个容器下自定义一系列的Valve来回请求进行拦截过滤。请求在经过一系列过滤器后由最后一个过滤器调用servlet的service方法
在这里插入图片描述
最终service方法根据请求的方式调用对应的doGet、doPost等方法,完成整个流程的闭环。

Tomcat整个设计使用了JMX(Java Manager Extension)来实现对整个应用的监控,于是可以使用JConsole进行监控,要实现一个JMX应用需要实现一个一个的MBean,作为被监控的对象,然后提供一个MBeanServer 来对所有的Mbean进行监控。

Tomcat在每个流程的实现中还大量使用了观察者模式来进行生命周期管理
在这里插入图片描述
观察者模式一般需要三类对象,分别是Subject OBClient OBServer。Subject负责注册一个个观察者,与通知所有观察者,OBserver为一个个的观察者,一般需要定义一个接口,然后根据需要实现一个个观察者对象,OBclient为被观察对象,当被观察对象的状态发生变化的时候会通知Subject,由其通知所有的观察者做对应的操作。在Tomcat中LifeCycle作为接口由抽象类LifeCycleBase部分实现,凡是继承了LifeCycleBase类的子类都作为一个个观察者,其提供了addLifecycleListener方法注册一个个监听器,也就是一系列的观察者,当被观察者状态(启动过程的推进、init\load\start等)发生变化时由LifeCycleBase#fireLifecycleEvent方法调用各个监听器的lifecycleEvent方法发送通知给所有的观察者。
在这里插入图片描述
下回分解,Tomcat启动流程。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值