NIO學(xué)習(xí)之Web服務(wù)器示例
1 根據(jù)cpu core數(shù)量確定selector數(shù)量2 用一個(gè)selector服務(wù)accept,其他selector按照core-1分配線程數(shù)運(yùn)行
3 accept selector作為生產(chǎn)者把獲得的請(qǐng)求放入隊(duì)列
4 某個(gè)selector作為消費(fèi)者從blocking queue中取出請(qǐng)求socket channel,并向自己注冊(cè)
5 當(dāng)獲得read信號(hào)時(shí),selector建立工作任務(wù)線程worker,并提交給系統(tǒng)線程池
6 worker線程排隊(duì)后在線程池中執(zhí)行,把協(xié)議頭讀入緩沖區(qū),然后解析,處理,響應(yīng),關(guān)閉連接










































































































































































===============06/27/10
如何解析header?,以行為單位讀取,按照header敏感的關(guān)鍵字進(jìn)行匹配 對(duì)于首行取得對(duì)方調(diào)用的方法GET/POST 地址 和協(xié)議版本
然后根據(jù)用戶的配置,和解析地址請(qǐng)求,獲得響應(yīng)的servlet,并把通過(guò)反射+默認(rèn)構(gòu)造函數(shù)構(gòu)造這個(gè)servlet,解析地址參數(shù)等設(shè)置到對(duì)象httpservletrequest和httpservletresponse中,然后通過(guò)反射invoke對(duì)應(yīng)的get/post/put/delete等方法,并把封裝的兩個(gè)對(duì)象作為參數(shù)傳進(jìn)去,同時(shí)在response的header中傳遞一個(gè)cookie作為session的依據(jù)。
如何解析header?,以行為單位讀取,按照header敏感的關(guān)鍵字進(jìn)行匹配 對(duì)于首行取得對(duì)方調(diào)用的方法GET/POST 地址 和協(xié)議版本
然后根據(jù)用戶的配置,和解析地址請(qǐng)求,獲得響應(yīng)的servlet,并把通過(guò)反射+默認(rèn)構(gòu)造函數(shù)構(gòu)造這個(gè)servlet,解析地址參數(shù)等設(shè)置到對(duì)象httpservletrequest和httpservletresponse中,然后通過(guò)反射invoke對(duì)應(yīng)的get/post/put/delete等方法,并把封裝的兩個(gè)對(duì)象作為參數(shù)傳進(jìn)去,同時(shí)在response的header中傳遞一個(gè)cookie作為session的依據(jù)。
@2008 楊一. 版權(quán)所有. 保留所有權(quán)利
posted on 2010-06-25 19:19 楊一 閱讀(1977) 評(píng)論(0) 編輯 收藏 所屬分類: Java SE