Tomcat是最常用的web容器之一,Tomcat Connector有bio、nio、apr三种运行模式:

Tomcat运行模式:

  • bio
    bio(blocking I/O),顾名思义,即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。Tomcat在默认情况下,就是以bio模式运行的。遗憾的是,就一般而言,bio模式是三种运行模式中性能最低的一种。
  • nio
    nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。
  • apr
    apr(Apache Portable Runtime/Apache可移植运行时),是Apache HTTP服务器的支持库。你可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。

httpprotocol

  • HTTP/1.1
  • org.apache.coyote.http11.Http11Protocol –BIO实现
  • org.apache.coyote.http11.Http11NioProtocol –NIO实现
  • 定制的接口
    配置“HTTP/1.1”和“org.apache.coyote.http11.Http11Protocol”的效果是一样的,因此connector的HTTP协议实现缺省是支持BIO的。无论是BIO还是NIO都是实现一个org.apache.coyote.ProtocolHandler接口,因此如果需要定制化,也必须实现这个接口。
private Connector createTomcatConnector() {Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");connector.setScheme("http");connector.setPort(8080);connector.setSecure(false);connector.setRedirectPort(8081);return connector;}

这里在new一个Tomcat Connector时,传入的httpprotocol如果写为org.apache.coyote.http11.Http11Protocol,项目启动会报错:

断点跟进去会发现:connector.setPort(8080)没有生效

初始化httpprotocol改为org.apache.coyote.http11.Http11NioProtocol:

会发现修改生效了。

Tomcat Connector相关推荐

  1. 8080:The Tomcat connector configured to listen on port 8080 failed to start 的解决办法

    问题再现: 控制台最后会显示Application启动失败,如下: ...*************************** APPLICATION FAILED TO START ******* ...

  2. 修改Tomcat Connector运行模式,优化Tomcat运行性能

    这篇博客写得很好,记下来了:http://www.cnblogs.com/freeweb/p/6430053.html http://blog.csdn.net/xyang81/article/det ...

  3. 【Tomcat】Tomcat Connector的三种运行模式【bio、nio、apr】

    Tomcat Connector(Tomcat连接器)有bio.nio.apr三种运行模式 bio bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O ...

  4. Tomcat Connector的三种运行模式【bio、nio、apr】

    Tomcat Connector(Tomcat连接器)有bio.nio.apr三种运行模式 bio bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O ...

  5. The Tomcat connector configured to listen on port 8082 failed to start.启动web项目报错

    8082端口被占用 用IDEA连tomcat做web,特意换了8082接口,之前都好好的,这次突然打不开了.显示The Tomcat connector configured to listen on ...

  6. 【tomcat 端口占用启动失败】The Tomcat connector configured to listen on port xx failed to start

    [tomcat 启动报错]The Tomcat connector configured to listen on port 80failed to start问题解决 1.打开cmd 在CMD中输入 ...

  7. The Tomcat connector configured to listen on port xxxxx failed to start.The port may already be used

    在学习SpringBoot过程中, 遇到了各种问题- Windows下如何查看某个端口被谁占用 错误过程: *************************** APPLICATION FAILED ...

  8. Tomcat Connector运行模式从bio方式改成nio方式

    并发数过高时,会导致等待响应的线程(空闲的线程)超过Tomcat设置限制的最大值,所以tomcat停止响应了, 优化方案(把Tomcat Connector运行模式从bio方式改成nio方式{nio性 ...

  9. Tomcat connector 实现原理

    Bootstrap.main()->Bootstrap.init() bootstrap.init() 方法中设置catalinaDaemon 创建 Connector 对象 Bootstrap ...

最新文章

  1. 导入旧版本Android项目时的“Unable to resolve target ‘android
  2. solr模糊查询_《Solr实战》之一
  3. 小程序 | 打开CMS时出现了404报错?
  4. IOS-OC-基本控件之UITextField
  5. vs 编译设置obj路径_编译、连接
  6. 第3章 控制程序流程(1)
  7. python身份证号码解析编程_Python实现身份证号码解析
  8. 手机上做c语言作业的软件下载,c语言编程软件手机版下载-C语言编程 安卓版v1.0.2-PC6安卓网...
  9. 用excel实现工作日志的更新和汇总
  10. Maya - 后缀为xgen文件导出到虚幻引擎
  11. onetab丢失崩溃怎么办?快试试我这个类似功能的插件吧,也可以当做插件开发入门教程
  12. Docker之工作中常用的命令(二)
  13. type-c耳机方案
  14. 远程终端工具Xshell、Xftp传输工具、VMware 、CentOS7的下载、安装和使用教程(完整版)
  15. 关闭centos7下哔哔声
  16. Big5 = GBK GBK = Big5 GB2312 = GBK GBK = GB2312 互转
  17. PHP生成微信小程序带参数的二维码,可生成带参数二维码
  18. html跳转qq浏览器,为何QQ浏览器主页自动跳转
  19. 使用jQuery中ajax实例
  20. SSO-单点登录(1)

热门文章

  1. 【Linux基础】压缩和解压
  2. JPA 系列教程12-复合主键-2个@Id+@IdClass
  3. consul的安装配置 一centos7环境
  4. GDI+ 应用,Release没有错误,Debug很多。
  5. Blackfin DSP学习心得与参考资料
  6. flutter FadeTransition实现透明度渐变动画
  7. [转]设计模式六大原则[1]:单一职责原则
  8. RabbitMQ配置文件
  9. 最简单的ajax示例
  10. Ehcache分布式缓存及测试方法