当前位置: 首页 > wzjs >正文

保定网站建设培训班长春seo排名外包

保定网站建设培训班,长春seo排名外包,wordpress多站点 缺点,小蓝本企业查询官网目录 1 Connector高内聚低耦合设计 1.1 ProtocolHandler组件 1.2 Endpoint组件 1.3 Processor组件 1.4 Adapter组件 2 Container父子容器组合模式设计 3 Pipeline-Value责任链模式设计 4 tomcat组件生命周期设计 1 Connector高内聚低耦合设计 优秀的模块设计应该考虑高内聚低耦…

目录

1 Connector高内聚低耦合设计

1.1 ProtocolHandler组件

1.2 Endpoint组件

1.3 Processor组件

1.4 Adapter组件

2 Container父子容器组合模式设计

3 Pipeline-Value责任链模式设计

4 tomcat组件生命周期设计


1 Connector高内聚低耦合设计

优秀模块设计应该考虑高内聚低耦合设计

  • 高内聚相关度比较功能可能集中不要分散
  • 低耦合两个相关模块尽可能减少依赖的部分和降低依赖程序不要两个模块产生强依赖

tomcat连接器需要实现功能

  • 监听网络端口
  • 接受网络连接请求
  • 根据具体应用协议HTTP/AJP)解析字节流生成同一Tomcat Request对象
  • tomcat Request对象转换标准ServletRequest
  • 调用Servlet容器得到ServletResponse
  • ServletResponse转换Tomcat Response对象
  • tomcat Response转成网络字节流
  • 响应字节流客户端

分析如上功能可知连接器需要3高内聚功能

  • 网络通信
  • 应用协议解析
  • Tomcat Request/ResponseServlet Request/Response转换

因此tomcat设计3组件负责实现上述3功能

  • EndPoint负责处理连接读取字节Processor
  • Processor解析字节生成tomcatRequestAdapter
  • Adaptertomcat request转成ServletRequest对象容器

组件之间通过抽象接口交互各个组件隔离有助于增加复用性降低系统耦合度

1.1 ProtocolHandler组件
  • 由于I/O模型应用协议可以自由组合比如NIO+HTTP或者NIO2+AJP
  • tomcat设计者网络通信应用层协议解析放在一起考虑设计了一个ProtocolHandler接口封装两种变化
  • 各种协议通信模型的组合有相对应具体实现比如Http11NioProtocolAjpNioProtocol
  • tomcat设计了一些抽象封装不变的逻辑比如AbstractProtocol实现ProtocolHandler接口然后每一种应用协议自己抽象基类比如AbstractAjpProtocolAbstractHttp11Protocol具体协议实现扩展了协议抽象基类

  • 连接器使用ProtocolHandler来处理网络连接应用层协议
  • 连接器使用ProtocolHandler接口封装通信信息I/O模型差异
  • ProtocolHandler内部分为EndpointProcessor模块
  • Endpoint负责底层Socket通信
  • Processor负责应用协议解析
  • 连接器通过适配器Adapter调用容器

1.2 Endpoint组件
  • Endpoint通信端点监听通信接口具体Socket接受发送处理
  • Endpoint传输层抽象对应公共抽象类AbstractEndpoint具体子类对应具体NIOAIOAPRI/O模型

  • Endpoint实现中有两个重要的组件AcceptorSocketProcessor
  • Acceptor用于监听Socket连接请求
  • SocketProcessor用于处理接收Socket请求即Socket的读事件)
  • SocketProcessor提交线程池执行sever.xml配置Executor
  • SocketProcessor处理socket请求最终提交协议处理组件Processor

1.3 Processor组件
  • Processor用来实现HTTP/AJP协议
  • Processor接收来自EndpointSocket字节流解析TomcatRequestResponse对象
  • Processor将请求通过Adapter提交到容器处理

  • Processor组件解析socket数据生成TomcatRequest对象调用Adapterservice方法
1.4 Adapter组件
  • 由于协议不同客户端发送过来的请求信息也不相同
  • Tomcat自定了自己Request存放这些信息
  • Processor负责解析请求生成Tomcat Request对象
  • CoyoteAdapter负责Tomcat Request对象转为标准ServletRequest然后调用Engine容器Pipeline

2 Container父子容器组合模式设计
  • tomcat通过组合设计模式管理EngineHostContextWrapper容器
  • EngineHostContextWrapper继承了Container顶级接口
  • Container接口具备管理容器子容器列表能力

3 Pipeline-Value责任模式设计

  • Adapter执行service方法拿到Engine容器Pipeline的第一个Valve对象并执行invoke方法
  • 然后通过责任链方式调用Pipeline所有Valve对象
  • Engine容器最后一个Valve对象StandardEngineValve拿到Request对象Host然后调用Host容器Pipeline第一个Valve对象后面类推

Valve接口

Pipeline接口

  • Pipeline维护了firstValve和basicValve对象
  • 然后Valve存在next属性指向下一个Valve对象
  • 通过以上方式Pipeline间接维护所有Valve对象
4 tomcat组件生命周期设计
  • tomcat组件生命周期设计主要包含方面
  • 其一初始化启动停止销毁方法回调
  • 第二这些生命周期方法执行前后可扩展机制

  • tomcat通过父子容器方式管理所有EngineHostContextWrapper容器这样通过Engine容器找到所有子容器
  • Service组件维护Engine容器引用
  • Server组件维护Service组件列表
  • 以上所有组件实现Lifecycle接口实现各自初始化启动停止销毁阶段
  • 启动调用Server组件init,start方法Server组件负责调用自己维护各个Service组件init,start方法依此类推就完成所有组件初始化启动方法回调
  • 停止启动逻辑类似完成停止销毁方法回调

  • tomcat组件生命周期方法执行前后可扩展机制通过事件来完成
  • 比如启动前后发布对应事件如果需要扩展只需添加监听器监听对应事件即可
  • tomcat定义如下事件

tomcat组件生命周期状态变化

tomcat组件生命周期继承体系

http://www.dtcms.com/wzjs/370428.html

相关文章:

  • 河北建设工程网站互联网广告投放
  • 做网站要什么技术网址制作
  • 如何选择网站建设流程浙江新手网络推广
  • wordpress建立网站会员卡营销策划方案
  • 谷歌wordpress建站360优化大师软件
  • 三种常用的网站设计软件北大青鸟培训机构靠谱吗
  • wordpress 分类目录seo插件搜索引擎营销与seo优化
  • 百度竞价网站谁做品牌营销活动策划方案
  • 来宾建设工程造价网站seo服务外包费用
  • 制作一个网站的费用抖音推广合作方式
  • 企业网站 多网站推广免费友情链接网
  • 好看云在线网站模板下载 迅雷下载 迅雷下载地址semir是什么牌子
  • 北京免费网站建设创建网站的流程是什么
  • 网站排名下降什么是市场营销
  • 做网站买流量新闻最新热点
  • 没钱能注册公司吗重庆搜索引擎seo
  • 那个旅游网站可以做行程青岛做网络推广的公司有哪些
  • 静态网站漏洞承接网络推广外包业务
  • 网站建设哪个品牌好中国十大电商平台排名
  • 做交互的网站关键词是什么意思
  • 做百度推广和企业网站那个有效果吗网站推广和优化系统
  • 无锡网站优化推广百度163黄页关键词挖掘
  • 网站affiliate怎么做?百度搜索热度
  • 做物流用哪个网站好网络营销渠道可分为哪些
  • 超市代理商网站模板北京网站维护公司
  • 小白学做网站教程网络顾问
  • 医院网站首页设计登录百度账号
  • 如何做响应式的网站深圳关键词优化怎么样
  • 高中教做网站的软件关键词优化seo费用
  • 做网站需要哪些费用支出好看的seo网站