TomcatNIO中數(shù)據(jù)處理類(lèi)是怎么樣的

這篇文章主要介紹了Tomcat NIO中數(shù)據(jù)處理類(lèi)是怎么樣的,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了海城免費(fèi)建站歡迎大家使用!

在 tomcat NIO 的實(shí)現(xiàn)里,會(huì)有一系列處理數(shù)據(jù)讀寫(xiě)的類(lèi)。并且 tomcat 也實(shí)現(xiàn)了servlet 標(biāo)準(zhǔn),是 servlet 容器。所以會(huì)把處理數(shù)據(jù)讀寫(xiě)的類(lèi)封裝成標(biāo)準(zhǔn)的HttpServletRequest 和HttpServletResponse 實(shí)現(xiàn),從而完成從原始 socket 連接請(qǐng)求到 servlet API 的調(diào)用。對(duì)于請(qǐng)求 Request 相關(guān)的類(lèi),展示如下圖:

Tomcat NIO中數(shù)據(jù)處理類(lèi)是怎么樣的

  • HttpServletRequest 類(lèi),代表標(biāo)準(zhǔn) servlet API 中對(duì)于 Request 的具體的定義,其實(shí)現(xiàn)類(lèi)為org.apache.catalina.connector.Request 。
  • HttpServletResponse ,是HttpServletRequest的實(shí)例,代表標(biāo)準(zhǔn) servlet API 中對(duì)于 Response 的具體的定義,其中具體的實(shí)現(xiàn)類(lèi)為org.apache.catalina.connector.Response 。
  • Connector 類(lèi),屬于 HttpServletRequest 類(lèi)的實(shí)例,是對(duì)上一篇文章中介紹的頂層框架類(lèi) Connector 引用。
  • CoyoteRequest ,屬于HttpServletRequest 類(lèi)的實(shí)例,同時(shí)也是屬于InputBuffer 類(lèi)和 Http11InputBuffer 類(lèi)的實(shí)例,是 tomcat 對(duì)連接請(qǐng)求的封裝,同時(shí)里面也包含 http method ,uri ,querystring ,host ,port 等 items 的封裝。
  • CoyoteInputStream,是 HttpServletRequest 類(lèi)的實(shí)例,是 tomcat 對(duì)于輸入流的包裝。
  • InputBuffer 類(lèi),屬于 HttpServletRequest 類(lèi)的實(shí)例,也屬于 CoyoteInputStream 類(lèi)的實(shí)例,用來(lái)完成請(qǐng)求數(shù)據(jù)的讀取。其中包含 Bytebuffer 和 CharBuffer 作為字節(jié)和字符讀取緩沖區(qū),默認(rèn)大小為1028*8 bit ,即8KB。
  • CoyoteResponse 類(lèi),屬于 CoyoteRequest 類(lèi)的實(shí)例,是 tomcat 對(duì)于對(duì)連接響應(yīng)的封裝。
  • Http11InputBuffer 類(lèi),主要用于完成請(qǐng)求數(shù)據(jù)的讀取,其中包含 Bytebuffer 作為字節(jié)讀取緩沖區(qū),包含 SocketInputBuffer 輔助類(lèi)用于完成到 Bytebuffer 字節(jié)緩沖區(qū)的讀操作。
  • NioSocketWrapper 類(lèi),是 Http11InputBuffer 類(lèi)的實(shí)例,封裝了原始的 scoket ,提供封裝的 socket 讀寫(xiě)操作。
  • NioSelectorPool 類(lèi),屬于 NioSocketWrapper 類(lèi)的實(shí)例,當(dāng)數(shù)據(jù)需要多次讀寫(xiě)的時(shí)候,監(jiān)測(cè)注冊(cè)在原始 scoket 上的讀寫(xiě)事件是否發(fā)生。
  • CountDownLatch 類(lèi),這里有 readLatch 實(shí)例和 writeLatch 兩個(gè)實(shí)例,而這兩個(gè)均是屬于 NioSocketWrapper 類(lèi)的實(shí)例。用于當(dāng)數(shù)據(jù)不可讀,或者不可寫(xiě)的時(shí)候?qū)?tomcat io 線程的阻塞,即如果數(shù)據(jù)不可讀寫(xiě),tomcat io 線程會(huì)分別在 readLatch 實(shí)例和 writeLatch 實(shí)例上等待。
  • Poller 類(lèi),是屬于 NioSocketWrapper 類(lèi)的實(shí)例,主要監(jiān)測(cè) epoll 模型里注冊(cè)原始 scoket 上的讀寫(xiě)事件是否發(fā)生。里面包含事件隊(duì)列SynchronizedQueue ,java NIO 事件輪詢(xún)對(duì)象 selector,同時(shí)還包含了并發(fā)事件計(jì)數(shù)器 weakupCounter。
  • NioChannel 類(lèi),是屬于 NioSocketWrapper 類(lèi)的實(shí)例,對(duì)原始 java NIO 對(duì)象 ScoketChannel 的封裝,同時(shí)它的內(nèi)部也引用了其所從屬的NioSocketWrapper 類(lèi)的實(shí)例。
  • SocketBufferHandler 類(lèi),屬于 NioChannel 類(lèi)的實(shí)例,主要是用于進(jìn)行封裝原始 java NIO ScoketChannel 對(duì)象的讀寫(xiě) buffer 。其內(nèi)部有 DirectBuffer 類(lèi)型的讀緩沖與寫(xiě)緩存,這里的 DirectBuffer 是堆外內(nèi)存,而不是 jvm 內(nèi)存,從而提高了讀寫(xiě)效率。

對(duì)于請(qǐng)求 Reponse 相關(guān)的類(lèi),展示如下圖:

Tomcat NIO中數(shù)據(jù)處理類(lèi)是怎么樣的

  • HttpServletReponse 類(lèi),代表標(biāo)準(zhǔn) servlet API中對(duì)于Reponse 的定義,其具體實(shí)現(xiàn)類(lèi)為 org.apache.catalina.connector.Reponse。
  • HttpServletRequest,是HttpServletReponse的實(shí)例,代表標(biāo)準(zhǔn) servlet API 中對(duì)于 Request 的具體的定義,其中的具體的實(shí)現(xiàn)類(lèi)為org.apache.catalina.connector.Request 。

  • CoyoteOutputStream,是 HttpServletReponse 類(lèi)的實(shí)例,是 tomcat 對(duì)于輸出流的包裝。
  • OutputBuffer 類(lèi),是屬于 CoyoteOutputStream 類(lèi)的實(shí)例,也屬于 HttpServletReponse 類(lèi)的實(shí)例,用來(lái)完成響應(yīng)數(shù)據(jù)的寫(xiě)操作。其中包含Bytebuffer 和 CharBuffer 作為字節(jié)和字符寫(xiě)操作緩沖區(qū),默認(rèn)大小為1024*8 bit,即8KB。
  • CoyoteResponse 類(lèi),即是屬于 CoyoteRequest 類(lèi)的實(shí)例,也屬于 OutputBuffer 類(lèi)的實(shí)例,是 tomcat 對(duì)于對(duì)連接響應(yīng)的封裝。
  • Http11OutputBuffer 類(lèi),主要用于完成響應(yīng)數(shù)據(jù)的寫(xiě)操作,其中包含 Bytebuffer 作為 header 字節(jié)寫(xiě)緩沖區(qū),包含 SocketOutputBuffer 輔助類(lèi)完寫(xiě)操作。
  • NioSocketWrapper,屬于Http11OutputBuffer類(lèi)的實(shí)例,封裝了原始的 scoket ,提供封裝的 socket 讀寫(xiě)操作。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Tomcat NIO中數(shù)據(jù)處理類(lèi)是怎么樣的”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

文章題目:TomcatNIO中數(shù)據(jù)處理類(lèi)是怎么樣的
當(dāng)前URL:http://muchs.cn/article4/ipieie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)App開(kāi)發(fā)、做網(wǎng)站搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)