Tomcat源码分析--一次HTTP请求过程

本文深入探讨了Tomcat服务器如何处理HTTP请求。从NIOEndPoint的Acceptor内部类开始,它接收TCP/IP连接并分配给processor。通过setSocketOptions方法,使用生产者消费者模式管理Socket连接。进一步涉及Java NIO的channel和Poller线程,最终调用service方法处理请求,此方法类似于Servlet的生命周期方法。
摘要由CSDN通过智能技术生成

       前两篇我们分析了Tomcat服务的启动过程和Connector(连接器)。现在让我们看看一次Tomcat服务器是怎么提供HTTP服务的。

       上文我们说到endpoint是底层处理I/O具体实现类,那么一次HTTP首先也要从这个类中开始。还是以NIOEndPoint实现类为例子。在NIOEndPoint类中有一个名为Acceptor内部类。该内部类负责接收即将到来的TCP/IP连接,并将它们分配给合适的processor处理。
这里写图片描述
HTTP底层是TCP协议,Java实现TCP协议的具体的方式就是Socket连接。我相信只要了解一点Java网络编程方面的知识都会了解的,不在累述。另一个比较重要的方法是setSocketOptions(),该方法是将socket连接添加到一个缓存队列里面。这里使用的是生产者和消费者模式,如果对该模式有不了解,请看我的另一个博文,Java并发之生产者和消费者模型http://blog.csdn.net/c275046758/article/details/50492107

这里写图片描述
setSocketOptions方法内获得了channel。channel是java nio中的概念,有不了解的请查看Java nio的相关内容。然后在register()方法中将channel添加到缓存队列中。

这里写图片描述<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值