996_Tomcat原理
2024-05-23 21:34:12 0 举报
Tomcat原理剖析
作者其他创作
大纲/内容
enginValue1
service 2
service 1
wrapperValue1
xssFilter
processor将请求包装为基于HTTP协议的Request请求对象
filterChaindoFilter()
hostValue2
host容器
响应
请求
管理多个站点(Host)
发送HTTP请求到Tomcat上的流程1、TCP三次握手建立连接(略)假设来自客户的请求为: http://localhost:8080/wsota/wsota_index.jsp 1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得 2) Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应 3) Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host 4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机) 5) localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context 6) Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为””的Context去处理) 7) path=”/wsota”的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet 8) Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类 9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法 10)Context把执行完了之后的HttpServletResponse对象返回给Host 11)Host把HttpServletResponse对象返回给Engine 12)Engine把HttpServletResponse对象返回给Connector 13)Connector把HttpServletResponse对象返回给客户browser TCP四次挥手断开连接(略)
1、处理连接2、将请求转化为request和response
代表整个服务器,包含多个service
处理Request,封装管理servlet,pipeline-value责任链webapps代表一个站点,下面的每一个文件夹代表一个应用context,每一个wrapper封装着一个servlet
service 3
enginePileline
wrapperPileline
acceptor请求监听
connector 1(HTTP)8080
wrapperValue2
代表某个服务,包含多个connector和一个container,处理各种协议
找到webapps(一个host)
connector 2(HTTPS) 443
contextPileline
FilterdoFilter()
返回相应
AsyncTimeout异步request超时监控
调用所有与请求匹配的Filter的doFilter和servlet的service方法
service ... ...
hostPileline
一个web应用,管理多个servlet(wrapper)
servletservice()
context容器
handler处理请求
管理多个应用(context)
create
server
webapps/boss/order.do
contextValue1
adaptor转发给匹配的servlet
engine容器
endpoint实现TCP/IP建立连接
standardEnginValue(baseValue指向下一个pipeline,选择可用的host处理当前请求)
standardWrapperValue
webapps/myapp/login.do
standardHostValue为特定的URL选择context容器
contextValue2
container
hostValue1
protocolHandler(包含bio、nio等多个handler)
service N
orderservlet
wrapper容器
enginValue2
standardContextValue构造request和response对象
loginservlet
管理多个(context)
0 条评论
下一页