tomcat的连接器

Posted 趣论编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat的连接器相关的知识,希望对你有一定的参考价值。

为啥会有tomcat连接器?

答:因为需要保持tomcat灵活的架构,减少不相关模块之间的耦合,并保持关系密切的功能的高度内聚。

一个web服务器的功能如下:

  1. 监听端口,监听来自客户端的请求

  2. 发现请求后,建立连接

  3. 建立连接后,接收连接中的字节流

  4. 根据不同的约定,采用对应的协议对字节流进行解析,得到request对象

  5. 根据request对象去调用相应的servlet

  6. 得到servlet响应的结果后,重新封装成response对象

  7. 将response对象转换成字节流

  8. 将字节流重新写回套接字

我们可以在其中发现一个功能高度相关的半部分,比如连接的管理、套接字的处理、字节流的读取和写入等,同时我们也可以发现,对于servlet的处理流程、以及servlet的管理,则与前述部分没有太大关系。

因此,自然而然的就会将整个流程分割成两个模块,这就形成了连接器和容器

基础背景

  1. 存在多种socket处理方式,NIO,NIO2,AIO。

  2. 网络通信有多种协议,HTTP/1.1,HTTP/2,AJP。

连接器要做什么?

  1. 监听,建立连接

  2. 处理字节流

  3. 将字节流转换为标准的serlvetRequest,并调用servlet

  4. 得到处理结果后,包装成tomcat的response对象

  5. 写入连接中

连接器到底长啥样?

同样按照高内聚、低耦合的思想,连接器被分成三个功能模块:处理连接、处理流与对象、对象间的适配。

处理连接-->endpoint

处理流-->process

处理对象-->adapter

ProtocolHandler

protocolHandler实际上是把endpoint和process接口放在一起,重新包了一层。这样做的好处在于可以方便不同的IO模型和应用层协议进行组合。你实现protocolHandler时,可以使用不同的endpoint实现类和process实现类,组合出不同类型的连接器类型,非常方便。


以上是关于tomcat的连接器的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat8源码学习之九连接器

Tomcat JDBC连接池(Tomcat 9)

tomcat的连接器

Tomcat的连接器与容器

Tomcat的连接器与容器

hibernate和tomcat的连接池问题