美文网首页
Undertow 2.0.8 final 工作原理代码走读

Undertow 2.0.8 final 工作原理代码走读

作者: 大继 | 来源:发表于2020-03-14 18:12 被阅读0次

前言

为了观察undertow 线程管理机制,Servlet4.0 封装过程,决定对一个容器进行深度理解.

入口

从Undertow.start()开始
1.Xnio : 对标准SelectorProvider 和 ClassLoader 进行封装。
2.XnioWorker :基于Xnio封装创建。
2.1 XnioWorker.createWorker
创建一个 Selector 的接入请求线程。和于CPU线程数一样的Selector 其他事件进行监控。重点:并初始化一个 TaskPool.一个被封装过的ThreadPoolExecutor 默认保持60秒链接。并由这个线程池提供 ExchangeHandler 处理。
2.2 XnioWorker.WorkerThread
由WorkerThread,核心代码 selector.select(). 监听到需要 ExchangeHandler 的时间,交给TaskPool 进行处理。

3.ChannelListener 对SockeChannel 封装HttpHandler 到 QueuedNioTcpServer

4.唤醒 selector 开始所有工作
Selector 监听网络IO(QueuedNioTcpServer.acceptTask()让accept 线程继续). 把事件给到 分发给 Xnio进行二次分发 - 链接请求事件给到Accept线程 —> 再给到ioWorker -> 再给到TaskPool

总结

Xnio包含了核心线程, 链接事件线程, 分发线程,处理线程。

由IOWorker 进行链接封装包装 QueuedNioTcpServerHandle(依赖QueuedNioTcpServer)->ExchangeHandler ->SocketChannel.attachment 到TaskPool(一个标准ThreadPoolExecutor)

相关文章

网友评论

      本文标题:Undertow 2.0.8 final 工作原理代码走读

      本文链接:https://www.haomeiwen.com/subject/pncgdhtx.html