喵喵喵。。。。之前一段时间在调试tomcat,分析结构,还找出来原来看不懂的how tomcat works。。。跟着写了一阵子。。。感觉还是学到了写东西的。。。那记录一下吧
先说说tomcat的系统架构。。。tomcat中最顶层的容器是server,代表整个服务器,server里有一个或多个service,表示具体服务。service主要包含两部分:connector和container.
connector用于处理连接相关的事情,并提供socket与request,response的转换,container用于封装和管理servlet,以及具体处理request请求。
Catalina--Tomcat中的server由catalina来管理,不过它的入口方法在Bootstrap类。Catalina是整个tomcat的管理者,是开始/关闭shell脚本的主类。它里面有三个方法load,start,stop分别用来管理整个服务器的生命周期:
--load方法用于根据conf/server.xml文件创建server并调用server的init方法进行初始化。
--start方法用于开启服务器
--stop方法用于停止服务器
Service--Service是包含Connector和Container的集合,Service用适当的Connector接收用户的请求,再发给相应的Container来处理。
Connector--实现某一协议的连接器,如默认的有实现HTTP、HTTPS、AJP协议的。
Container--可以理解为处理某类型请求的容器,处理的方式一般为把处理请求的处理器包装为Valve对象,并按一定顺序放入类型为Pipeline的管道里。Container有多种子类型:Engine、Host、Context和Wrapper,这几种子类型Container依次包含,处理不同粒度的请求。另外Container里包含一些基础服务,如Loader、Manager和Realm。
Engine--Engine包含Host和Context,接到请求后仍给相应的Host在相应的Context里处理。
Host--就是我们所理解的虚拟主机。
Context--就是我们所部属的具体Web应用的上下文,每个请求都在是相应的上下文里处理的。
Wrapper--Wrapper是针对每个Servlet的Container,每个Servlet都有相应的Wrapper来管理。
下面就是些被Container所用的基础组件:
Loader--是被Container用来载入各种所需的Class。
Manager--是被Container用来管理Session池。
Realm--是用来处理安全里授权与认证。
参考:
1. 看透spring MVC 源代码分析与实际
2. http://blog.csdn.net/cutesource/article/details/5006062