- 目录
- 概 述
- 小结
- 参考资料和推荐阅读
目录 概 述LD is tigger forever,CG are not brothers forever, throw the pot and shine forever.
Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, and stay away from poor people.
talk is cheap, show others the code and KPI, Keep progress,make a better result.
Survive during the day and develop at night。
2. 连接
当client与Jetty服务器建立连接时,连接会直接打到SelectorManager提供的ServerSocketChannel,accept后,拿到这个client对应的SocketChannel后,会选择一个ManagedSelector来执行IO事件检测,并创建好这条连接对应的EndPoint以及Connection
- 请求
当client向刚才建立的连接中写入请求数据时,ManagedSelector对应的事件检测循环(感兴趣的读者可以跳到后续Connector组件阅读)会探测到读事件,会触发SelectChannelEndPoint触发读回调,从而调用到HttpConnection.onFillable,onFillable里面借助于ByteBufferPool、HttpParser完成数据读取及解析,将解析后的元数据放入Request,直接触发HttpChannel.handle,这会打到Server.handle方法,Server会找到之前关联到自身的Handler,执行这个Handler的handle方法,这样就开启了Handler执行链(感兴趣的读者可以提前跳到Handler组件阅读),层层调用,最后调用到应用层Filter、Servlet,完成业务 *** 作
- 响应
当应用层完成业务 *** 作后,调用Response.getWriter或Response.getOutputStream,最终会调用到HttpOutput.write方法,触发数据回写,这时调用到HttpChannel.write,这里会触发HttpConnection.send,而HttpConnection会利用HttpGenerator生成响应报文,然后触发SelectChannelEndPoint向SocketChannel刷数据,这样就完成了响应
小结Jetty9源码剖析-总体架构
参考资料和推荐阅读1.链接: 参考资料.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)