博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tomcat 框架
阅读量:7169 次
发布时间:2019-06-29

本文共 1509 字,大约阅读时间需要 5 分钟。

hot3.png

Tomcat整体框架:

Server:
Server是Service的生存环境。一个Server中可以有多个Service。
Service:
Service将Connector和Container包装在一起提供对外服务,一个Service可以有多个Connector,但是只有一个Container。
Connector:
Connector负责对外交流。它的主要任务是负责接收浏览器的发过来的tcp连接请求,创建一个Request和Response对象分别用于和请求端交换数据,然后会产生一个线程来处理这个请求并把产生的Request 和Response对象传给处理这个请求的线程,处理这个请求的线程就是Container组件要做的事了。
Connector中网络事件的是ProtocolHandler,每个ProtocolHandler都有一个EndPoint,EndPoint则代表具体的端口监听模式,像BIO, NIO,ProtocolHandler接收来自EndPoint的事件,并交给Container处理。
Container:
Container负责处理Connector传过来的请求。
Container是容器的父接口,所有子容器都必须实现这个接口,Container容器的设计用的是典型的责任链的设计模式,它有四个子容器组件构成,分别是:Engine、Host、Context、Wrapper,这四个组件不是平行的,而是父子关系,Engine包含Host,Host包含 Context,Context包含Wrapper。通常一个Servlet class对应一个Wrapper,如果有多个Servlet就可以定义多个Wrapper,如果有多个Wrapper就要定义一个更高的Container了,如Context。
Container中都包含一个Pipeline,Pipeline则像是一个事件处理管道,上面有很多时间处理程序,Container接收到事件后,分别调用Pipeline上的Valve去处理,每一个上一层Container的Pipeline上都有一个指向下一层Container的Valve,从而做到了事件从上层Container传到下层。
a) Engine是完整的容器,其下面拥有多个虚拟主机,它的责任就是将Connector请求分配给虚拟机处理。它的标准实现类是StandardEngine,这个类注意一点就是Engine没有父容器了,如果调用 setParent方法时将会报错。
b) Host是Engine的子容器,一个Host在Engine中代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们。它的子容器通常是Context,它除了关联子容器外,还有就是保存一个主机应该有的信息。
c) Context还可以定义在父容器Host中,Host不是必须的,但是要运行war程序,就必须要Host,因为war中必有web.xml文件,这个文件的解析就需要Host了,如果要有多个Host就要定义一个top容器Engine了。而Engine没有父容器了,一个Engine代表一个完整的Servlet引擎。
d) Wrapper代表一个Servlet,它负责管理一个Servlet,包括的Servlet的装载、初始化、执行以及资源回收。Wrapper是最底层的容器,它没有子容器了,所以调用它的addChild将会报错。

转载于:https://my.oschina.net/u/2950586/blog/795684

你可能感兴趣的文章
自组织的基础
查看>>
通过容器进行持续部署
查看>>
Amazon Aurora新增“回溯”特性,让DB集群可以回退到特定时间点
查看>>
MonolithFirst:单体应用优先策略
查看>>
iostat和iowait详细解说
查看>>
rsync算法的思想--从轮询和中断引出
查看>>
虚拟化中的RSS与VMQ
查看>>
投了10亿元发展“影游IP”的阿里游戏:不止于游戏分发
查看>>
WEB测试资料
查看>>
浅谈C#托管程序中的资源释放问题
查看>>
关于用VS实现开机自启动功能(win7/winXp)
查看>>
zz装完UBUNTU后要干的事
查看>>
Linux IPC实践(5) --System V消息队列(2)
查看>>
设置电脑间指定用户共享
查看>>
一种测试方向的探讨-基于模型测试调研引发的思考 - 3
查看>>
tinyPng Photoshop Plugin 安装的坑
查看>>
自动生成卡密SQL脚本(转载)
查看>>
【Android 开发入门】Android设备监视器之调试工具DDMS使用初探
查看>>
JS控制光标定位,定位到文本的某个位置
查看>>
2016年IoT和新的逃逸技术引领威胁态势
查看>>