jetty服務(wù)器這種長(zhǎng)連接Continuations 其實(shí)不是真正的長(zhǎng)連接,應(yīng)該叫'connection freezing', or 'request parking' 連接暫停或請(qǐng)求暫停。
對(duì)于PUSH推機(jī)制:對(duì)于Jetty6其實(shí)還是依靠AJAX的客戶端主動(dòng)請(qǐng)求的,改善的是:不需要AJAX客戶端不斷發(fā)出多次請(qǐng)求給服務(wù)器,以確定服務(wù)器端是否有響應(yīng)。服務(wù)器端hold住ajax客戶端第一次請(qǐng)求,如果沒有業(yè)務(wù)結(jié)果,就不發(fā)出響應(yīng)response,也就是說不關(guān)閉這次http連接,但是因?yàn)橐粋€(gè)連接一個(gè)線程,你保持住一個(gè)請(qǐng)求就象保持一個(gè)線程一直運(yùn)行,這是很浪費(fèi)資源的。
傳統(tǒng)socket模式都是一個(gè)connection一個(gè)線程,NIO可以通過事件機(jī)制再觸發(fā)新線程,使得線程和請(qǐng)求可以分離,這樣, Jetty就是利用NIO這個(gè)機(jī)制,保持住請(qǐng)求request對(duì)象,釋放原來支持該請(qǐng)求的線程,讓線程返回線程池,這樣,如果業(yè)務(wù)處理有結(jié)果,Jetty就向客戶端發(fā)出響應(yīng),否則一直保持直至timeout失效。
這個(gè)機(jī)制如果證明可行,會(huì)加入servlet 3.0新規(guī)范,到時(shí)所有Jee服務(wù)器都有這個(gè)功能。
所以,這個(gè)機(jī)制不是嚴(yán)格意義上的推機(jī)制,但是也可以對(duì)付大量頻繁刷新請(qǐng)求,所以是一個(gè)改進(jìn)。
至于推機(jī)制中服務(wù)器如何推,可以參考eda架構(gòu),這個(gè)是和我們平時(shí)做的JEE的SOA機(jī)制不太一樣,至于如何推,可以使用線程提醒 觀察者JDK 或JMS等等。
http://www.theserverside.com/news/thread.tss?thread_id=36594
http://docs.codehaus.org/display/JETTY/Continuations
Jetty
Jetty簡(jiǎn)介
Jetty是一個(gè)開放源碼的HTTP服務(wù)器和Java serverlet容器。。
基本特色
相關(guān)鏈接
- 官方網(wǎng)站 http://jetty.mortbay.com/
http://xinsync.xju.edu.cn/index.php/archives/category/prglang/java/jetty