Tomcat连接

本文详细介绍了Tomcat的连接处理流程,以NIO连接为例,涉及Connector、Http11NioProtocol、Acceptor、NioEndpoint等关键组件。在接收到请求时,Connector通过Acceptor接收客户端连接,NioEndpoint进行轮询处理,SocketProcessor负责读写操作,最后通过协议处理器和容器Pipeline处理请求。
摘要由CSDN通过智能技术生成

Tomcat连接

概述

本文内容以常用的NIO连接处理为例,其他连接处理流程类似。同时,时序图中的类多数都为NioEndpoint类的内部类。

处理时序图

这里写图片描述

时序图说明

Connector

服务器端的一个服务端口的抽象,是处理连接的最上层对象。可以定义某个服务端内最大连接数,最大线程数,监听端口等。此类通过server.xml中的配置进行实例化并通过配置指定相应的协议(protocol属性,协议中包含协议对应的连接处理器和协议处理器),并与service组合。

以上时序图可以大致理解为一个socket请求访问Connector时,Connector内部的处理流程。

Connector在生命周期的init阶段会通过协议处理器内的Endpoint监听指定服务端口

Http11NioProtocol

由server.xml中声明Connector时指定,ProtocolHandler接口的实现类。顾名思义,协议。其内部包含就收连接相关的endpoint、处理连接的ConnectorHandler、处理协议内容的Porcessor等属性,并会设置协议相关的固定属性,例如http协议头最大长度等属性。

Acceptor

用于接收客户端请求、并根据最大连接数控制是否阻塞请求的线程对象。在启动阶段启动,默认(通常)情况下只有一个线程启动。用于处理ServerSocketChannel接收到的SocketChannel。在run()方法中,会首先判断是否达到最大连接数(Connector的配置),达到则会阻塞线程直到释放连接(使用LimitLatch实现)。

获取到的SocketChannel会交由NioEndpoint.setSocketOptions(SocketChannel)处理。

NioEndpoint

专门用于处理请求的服务端点,内保包含Acceptor、Poller以及处理请求的工作线程等对象。NioEndpoint对象

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值