Tomcat整体框架总结

本文章参考:http://blog.csdn.net/column/details/tomcat7-internal.html

一、Tomcat生命周期管理

1、生命周期接口



2、容器类



3、容器初始化



4、容器启动



二、Tomcat启动

Created with Raphaël 2.1.0 startup.sh startup.sh Bootstrap Bootstrap Catalina Catalina server.... server.... main() init() load(): server.xml start() init() start()

三、请求的准备阶段

请求前作的初始化和准备工作

Created with Raphaël 2.1.0 Call Call Connector Connector init() initInternal() register():protocolHandler register():mapperListener
Created with Raphaël 2.1.0 Call Call Connector Connector protocolHandler protocolHandler mapperListener mapperListener start() startInternal() init() start() init() 将Host及其子容器Context,Context的子容器Wrapper 注册到MapperListener的Mapper对象

四、接受请求&请求映射

第三部分已经初始化好protocolHandler和mapperListener

由protocolHandler中的Acceptor接收请求



Created with Raphaël 2.1.0 Accepter Accepter JIoEndpoint JIoEndpoint SocketProcessor SocketProcessor ProtocolHandler ProtocolHandler InternalInputBuffer InternalInputBuffer CoyoteAdapter CoyoteAdapter processSocket() new process() parseRequestLine() parseHeaders() prepareRequest() service(request, response) postParseRequest()获取mapper

CoyoteAdapter的service方法最后会将请求交给Engine的Pipeline去处理,Pipeline.invoke(request, response)

五、处理请求

在Tomcat中管道Pipeline是一个接口,定义了使得一组阀门Valve按照顺序执行的规范,Engine、Host、Context及Wrapper等容器都定义了自身的Pipeline,每个Pipeline都包含一到多个Valve

  • StandardEngine.getPipeline().getFirst().invoke(request, response)
    • host = getHost()
    • host.getPipeline().getFirst().invoke(request, response)



Filter的实现在最后的StandardWrapperValve中



本文章参考:http://blog.csdn.net/column/details/tomcat7-internal.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值