圖說springboot整合jetty-Request

一張巨無霸圖

  1. 將Selector與一個Channel註冊綁定得到一個SelectedKey
  2. 異步將EndPoint附加到SelectedKey。
  3. channel數據準備就緒時喚醒select阻塞,根據SelectedKey的attachment判斷channel的是Selectable,或者根據SelectedKey判斷isConnectable。
  4. 如果是Selectable則回調相應的callback(例如:ReadCallback)
    注:一個Selector可以監聽多個channel。
    1

Server容器中的bean

0 = {ContainerLifeCycleKaTeX parse error: Expected 'EOF', got '}' at position 10: Bean@7974}̲ "{QueuedThread…Bean@7975} “{ServerConnector@137a4b54{HTTP/1.1,[http/1.1]}{0.0.0.0:16090},MANAGED}”
2 = {ContainerLifeCycleKaTeX parse error: Expected 'EOF', got '}' at position 10: Bean@7976}̲ "{o.s.b.c.e.j.…Bean@7977} “{AbstractLifeCycle@1acc873b{STOPPED},AUTO}”
4 = {ContainerLifeCycle$Bean@7978} “{ErrorHandler@6d617b07{STOPPED},AUTO}”
5 = {DefaultSessionIdManager@49bb808f{STARTED}[worker=node0],MANAGED}

ServerConnector容器中的bean

0 = {ContainerLifeCycleKaTeX parse error: Expected 'EOF', got '}' at position 10: Bean@8091}̲ "{Server@797f9…Bean@8092} “{QueuedThreadPool[qtp509636452]@1e606f64{STARTED,8<=8<=200,i=4,q=0}[ReservedThreadExecutor@6cee903a{s=0/4,p=0}],UNMANAGED}”
2 = {ContainerLifeCycleKaTeX parse error: Expected 'EOF', got '}' at position 10: Bean@8093}̲ "{ScheduledExe…Bean@8094} “{org.eclipse.jetty.io.ArrayByteBufferPool@1884e671,POJO}”
4 = {ContainerLifeCycleKaTeX parse error: Expected 'EOF', got '}' at position 10: Bean@8095}̲ "{HttpConnecti…Bean@8096} “{SelectorManager@ServerConnector@137a4b54{HTTP/1.1,[http/1.1]}{0.0.0.0:16090},MANAGED}”
6 = {sun.nio.ch.ServerSocketChannelImpl[/0:0:0:0:0:0:0:0:16090],POJO}

EatWhatYouKill容器中的bean

0 = {ContainerLifeCycleKaTeX parse error: Expected 'EOF', got '}' at position 11: Bean@13759}̲ "{SelectorProd…Bean@13760} “{QueuedThreadPool[qtp2042086224]@79b7c350{STARTED,8<=8<=200,i=8,q=0}[ReservedThreadExecutor@12670e55{s=0/4,p=0}],UNMANAGED}”

SelectorManager容器中的bean(當前案例中默認數量爲2)

0 = {ContainerLifeCycleKaTeX parse error: Expected 'EOF', got '}' at position 11: Bean@10700}̲ "{ManagedSelec…Bean@10701} “{ManagedSelector@424ebf5b{STOPPED} id=1 keys=-1 selected=-1 updates=0,AUTO}”

ManagedSelector容器中的bean

0 = {EatWhatYouKill@4e41b993/SelectorProducer@2a742ee4/IDLE/p=false/QueuedThreadPool[qtp2042086224]@79b7c350{STARTED,8<=8<=200,i=8,q=0}[ReservedThreadExecutor@12670e55{s=0/4,p=0}][pc=0,pic=0,pec=0,epc=0]@2020-05-24T16:24:06.017+08:00,MANAGED}

Server對connectors的特殊處理

Server中對connectors做了特殊處理,最後啓動

@Override
protected void start(LifeCycle l) throws Exception
{
   // start connectors last
   if (!(l instanceof Connector))
       super.start(l);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章