本文转载自 http://blog.csdn.net/cutesource/article/details/6192145

下面再来看看Tomcat是如何使用NIO来构架Connector这块的。

先看看Tomcat Connector这块的类图:

其中:

NioEndpoint负责组装各部件

Acceptor负责监听新连接,并把连接交给Poller

Poller负责监听所管辖的channel队列,并把请求交给SocketProcessor处理

SocketProcessor负责数据处理,并把请求传递给后端业务处理模块

在整个服务端处理请求的过程可以分为三个阶段,时序图如下所示:

阶段一:监听并建立连接

这一阶段主要是Acceptor监听新连接,并轮询取一个Poller ,把连接交付给Poller

阶段二: 监听客户端的请求

这一过程主要是让每个Poller监听所管辖的channel队列,select到新请求后交付给SocketProcessor处理

阶段三:处理请求

这一过程就是从多线程执行SocketProcessor,做数据和业务处理

于是乎我们发现抛开具体代码细节,Tomcat和Jetty在NIO的使用方面是非常一致的,采用的模式依然是下图:


 

从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(二)相关推荐

  1. 从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三)

    2019独角兽企业重金招聘Python工程师标准>>> 从Jetty.Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三) 博客分类: java 最后我们再看看NIO方面 ...

  2. 从100套真题中提炼而出的100个经典句子

    1. Typical of the grassland dwellers of the continent is the American antelope, or pronghorn. 1.美洲羚羊 ...

  3. 虚拟机中连接外部无线网络

    前言 在使用虚拟机中ubuntu与JetsonTX2实现ssh连接时,需要将虚拟机中操作系统与外部系统连接. 配置简介: 物理主机win10.VMware15pro.ubuntu18.04 参考 在虚 ...

  4. springBoot中jetty tomcat undertow对比与undertow线程池配置

    springBoot中jetty tomcat undertow对比 1)tomcat优点是稳定性好.可靠性高.支持 Servlet 和 JSP 等标准.构建中小型的 Web 应用程序,可以选择 To ...

  5. java中的NIO,BIO,AIO

    IO,input和output,Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中. IO是什么?为什么需要IO? java在1.4之前,提供的是BIO,也就是ja ...

  6. mina 中的IoBufer(一)

    为什么80%的码农都做不了架构师?>>>    IoBuffer 是 MINA 中的独有接口,主要继承实现的是 java NIO 中的 ByteBuffer ,所以从使用方法上来看二 ...

  7. 天生一对Maven2+Jetty -- Maven2创建并管理WebApp,并使用Maven Jetty Plugin在Eclipse中调试...

    天生一对"Maven2+Jetty" -- Maven2创建并管理WebApp,并使用Maven Jetty Plugin在Eclipse中调试 Maven2代比1代改进很多,其中 ...

  8. Tomcat Connector的BIO与NIO模式的比较及区别

    详细介绍了Tomcat的Connector组件的BIO和NIO模式以及工作流程. 上一篇文章:Tomcat的核心组件以及server.xml配置全解[一万字]中,我们简单介绍了Connector组件的 ...

  9. Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式

    Tomcat的运行模式有3种.修改他们的运行模式.3种模式的运行是否成功,可以看他的启动控制台,或者启动日志.或者登录他们的默认页面http://localhost:8080/查看其中的服务器状态. ...

最新文章

  1. MyEclipse搭建java Web项目开发环境
  2. 自己动手写RTP服务器——关于RTP协议
  3. 毕业设计第四次任务书
  4. baidu+app+per+android,百度移动统计|移动应用APP统计|android统计分析|iOS统计分析
  5. VS2017 按ctrl+f5执行程序窗口依然一闪而过的问题(图文)
  6. Solr 搭建搜索服务器
  7. Alsa驱动分析(转)
  8. Socket编程应用——开发聊天软件
  9. RedShift到MaxCompute迁移实践指导
  10. Python中真的是能使用元组的地方尽量不使用列表吗?
  11. java 生成不重复随机数_Java如何实现生成n个不重复的随机数 Java实现生成n个不重复的随机数代码...
  12. 【征文】极客头条使用体验及改进建议
  13. 安装LaTeX中文字体 xGBKFonts
  14. 互联的情怀 凝成一股绳共同成长
  15. CTPN/CRNN的OCR自然场景文字识别理解(一)
  16. GPS学习之二:AGPS,GPS,DGPS 认识
  17. 2020宁波银行终面一分钟抽词演讲
  18. 计算机网络 如何算 子网号,已知Ip地址子网掩码如何计算子网号、主机号.doc
  19. C++语言Switch函数使用小贴士
  20. Win10系统在当前文件夹下打开cmd(命令行)窗口

热门文章

  1. [Ext JS 7 ]7.5 自适应配置 - Responsive Configs
  2. [Perl系列—] 2. Perl 中的引用用法
  3. 2019新悦动打火困难解决了吗_悦动大面积存在启动困难北京现代检查不出原因就换零件...
  4. 2019一级计算机等级考试试题,2019年全国计算机等级考试一级练习试题及答案(一)...
  5. 华为鸿蒙os系统电脑有吗,华为全面启用鸿蒙OS系统!所有华为终端设备:默认搭载鸿蒙系统...
  6. Ordering Tasks UVA - 10305(拓扑排序)
  7. 计算机三级之嵌入式系统学习笔记1
  8. 计算机电缆检测报告,天联牌计算机电缆详细介绍
  9. 使用Excel4J获取Excel文件中的数据
  10. es6删除数组某项_javascript基础系列:数组常用方法解析