omcat核心源码阅读笔记总结

omcat核心源码阅读笔记总结

ID:24635157

大小:3.14 MB

页数:19页

时间:2018-11-11

omcat核心源码阅读笔记总结_第1页
omcat核心源码阅读笔记总结_第2页
omcat核心源码阅读笔记总结_第3页
omcat核心源码阅读笔记总结_第4页
omcat核心源码阅读笔记总结_第5页
资源描述:

《omcat核心源码阅读笔记总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Tomcat6核心源码阅读笔记2012-8-15Calvin.chen此次源码阅读基于tomcat6,官方svn地址:http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunkTomcat6核心源码阅读笔记11、tomcat6整体结构22、tomcat6主要组件22.1Server22.2Servic22.3Connector32.4Container33、tomcat6核心类结构分析63.1核心类结构图63.2tomcat启动过程主线图73.3请求处理类结构图83.4Container类结构图93.5Valve类

2、结构图103.6Pipeline和valve114、tomcat6如何实现多线程处理124.1多线程处理简图124.2多线程处理详图134.3多线程处理过程中几个比较重要的方法144.4多线程小结165、tomcat6处理一次请求的完整过程186、Tomcat6中的设计模式196.1链式设计196.2观察者模式19191、tomcat6整体结构2、tomcat6主要组件2.1ServerTomcatserver实例,需提供接口让其它程序能够访问到其中Service集合,同时要维护它所包含的所有Service的生命周期,包括如何初始化、如何结束服务、如何找到别人

3、要访问的Service。2.2ServicService只是在Connector和Container外面多包一层,把它们组合在一起,向外面提供服务,同时通过lifecycle接口管理下属组件(Connector和Engine)的生命周期。一个Service可以设置多个Connector,但是只能有一个Container(可以是Engine、Host或者Context、Wrapper)。192.3ConnectorConnector组件是Tomcat两个核心组件之一,它的主要任务是负责接收浏览器的发过来的tcp连接请求,创建一个Request和Response对

4、象分别用于和请求端交换数据,然后会产生一个线程来处理这个请求并把产生的Request和Response对象传给处理这个请求的线程,处理这个请求的线程就是Container组件要做的事了。2.4ContainerContainer是容器的父接口,所有子容器都必须实现这个接口,Container还有一个抽象实现类ContainerBase,Engine、Host、Context、Wrapper的默认实现都继承了这个类。Container容器的设计用的是典型的责任链的设计模式,它有四个子容器组件构成,分别是:Engine、Host、Context、Wrapper,这

5、四个组件是父子关系,Engine包含Host,Host包含Context,Context包含Wrapper。通常一个Servletclass对应一个Wrapper,如果有多个Servlet就可以定义多个Wrapper,如果有多个Wrapper就要定义一个更高的Container了,如Context。Context还可以定义在父容器Host中,Host不是必须的,但是要运行war程序,就必须要Host,因为war中必有web.xml文件,这个文件的解析就需要Host。如果要有多个Host就要定义一个top容器Engine。而Engine没有父容器了,一个Engi

6、ne代表一个完整的Servlet引擎。总之保证一个Service只有一个topcontainer(这个topcontainer里面可以有多个子container)。2.4.1Engine比较简单的一个容器,主要分负责管理子容器的周期。2.4.2HostHost是Engine的子容器,一个Host在Engine中代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们。它的子容器通常是Context,它除了关联子容器外,还有就是保存一个主机应该有的信息。关于Host中name属性和Engine中defaul

7、tHost的作用:如果有个host的name=localhost,那么Tomcat会将此host设置为默认访问的Host。即:如果出现下图中的情况,则client最终会去访问name=localhost的host,而不是defaultHost值定义的host(即不会去访问192.168.0.102)19Tomcat产生的server实例ServiceConnectorsHost_BName=192.168.0.102EnginedefaultHost=192.168.0.102Host_AName=192.168.0.101Client……访问http://1

8、92.168.0.103由于没有103

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。