温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

tomcat NIO主要涉及的java类有哪些

发布时间:2021-11-18 09:52:19 来源:亿速云 阅读:116 作者:小新 栏目:大数据

这篇文章将为大家详细讲解有关tomcat NIO主要涉及的java类有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

我们可以把 tomcat NIO 涉及的主要 java 类大致分为两种类型,一种类型是框架类,主要实现 NIO 的架构。另一种类型是数据处理类,实现读写的封装,类似于 Request 和 Response ,在这里我们主要介绍 tomcat NIO 涉及的框架类,下图展示了这些类:

tomcat NIO主要涉及的java类有哪些

  • 顶层类是 Connector 类型,主要负责用来初始化具体应用协议的处理类 ProtocolHandler 。应用协议包括 http 协议,http/1.1 版本,http/1.0 版本。AJP 协议,AJP/1.3 版本。

  • 次顶层类是 ProtocolHandler 类型,代表不同协议处理的实现类,对于 tomcat NIO 来说,实现类为 Http11NioProtocol ,用来处理 http/1.1 协议。对于普通的 http/1.0 版本协议来说,实现类为 Http11Protocol 。对于AJP/1.3 版本协议来说,为 AjpAprProtocol 和 AjpNioProtocol 这个两个类。
  • AbstractEndpoint 类是属于 Http11NioProtocol 类,其主要用来处理底层 socket 的连接,对于 tomcat NIO 的实现类来说是 NioEndpoint 。

  • Poller 类属于 NioEndpoint ,主要监测 epoll 模型里注册原始 socket 上的读写事件是否发生。

  • NioSelectorPool 类属于 NioEndpoint ,当数据需要多次读写的时候,监测注册在原始 socket 上的读写事件是否发生。

  • NioBlockingSelector 类属于 NioSelectorPool 类,对于监测注册在原始 scoket 上的读写事件,delegate 给 NioBlockingSelector 处理。

  • BlockPoller 类属于 NioBlockingSelector 类,实现具体的监测读写事件的逻辑。

  • SocketWrapper 类封装了原始 socket ,提供封装的 socket 读写操作。

  • ConnectionHandler 类属于 Http11NioProtocol 类,主要对 SocketWrapper 类进行操作,整个 tomcat NIO 的处理框架就仅仅只有一个 ConnectionHandler 实例,是 global 的,也就是说所有的连接 SocketWrapper 都由这个实例处理 。
  • Http11Processor,该类由 ConnectionHandler 实例调用,会把接收到的 SocketWrapper 封装成 tomcat 的 Request 和 Response 对象。

  • CoyoteAdapter,该类负责把 Http11Processor 封装的 tomcat Request 和 Response 对象给转换成 HttpServletRequest/HttpServletResponse 对象,并完成对 servlet API 的调用。

  • ConnectionHandler 实例中有一个 Map 类型的对象,key 为SocketWrapper 类型,value 为 Http11Processor 类型。也就是说为每一个连接都分配了处理类 Http11Processor ,可以保存连接的状态信息。

关于“tomcat NIO主要涉及的java类有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI