tomcatNIO主要涉及的java类有哪些

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

创新互联公司从2013年创立,先为广昌等服务建站,广昌等地企业,进行企业商务咨询服务。为广昌企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

我们可以把 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类有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


分享题目:tomcatNIO主要涉及的java类有哪些
文章转载:http://scyanting.com/article/igdjjp.html