tomcat的连接器
Posted 趣论编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat的连接器相关的知识,希望对你有一定的参考价值。
为啥会有tomcat连接器?
答:因为需要保持tomcat灵活的架构,减少不相关模块之间的耦合,并保持关系密切的功能的高度内聚。
一个web服务器的功能如下:
监听端口,监听来自客户端的请求
发现请求后,建立连接
建立连接后,接收连接中的字节流
根据不同的约定,采用对应的协议对字节流进行解析,得到request对象
根据request对象去调用相应的servlet
得到servlet响应的结果后,重新封装成response对象
将response对象转换成字节流
将字节流重新写回套接字
我们可以在其中发现一个功能高度相关的半部分,比如连接的管理、套接字的处理、字节流的读取和写入等,同时我们也可以发现,对于servlet的处理流程、以及servlet的管理,则与前述部分没有太大关系。
因此,自然而然的就会将整个流程分割成两个模块,这就形成了连接器和容器
基础背景
存在多种socket处理方式,NIO,NIO2,AIO。
网络通信有多种协议,HTTP/1.1,HTTP/2,AJP。
连接器要做什么?
监听,建立连接
处理字节流
将字节流转换为标准的serlvetRequest,并调用servlet
得到处理结果后,包装成tomcat的response对象
写入连接中
连接器到底长啥样?
同样按照高内聚、低耦合的思想,连接器被分成三个功能模块:处理连接、处理流与对象、对象间的适配。
处理连接-->endpoint
处理流-->process
处理对象-->adapter
ProtocolHandler
protocolHandler实际上是把endpoint和process接口放在一起,重新包了一层。这样做的好处在于可以方便不同的IO模型和应用层协议进行组合。你实现protocolHandler时,可以使用不同的endpoint实现类和process实现类,组合出不同类型的连接器类型,非常方便。
以上是关于tomcat的连接器的主要内容,如果未能解决你的问题,请参考以下文章