亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Jetty 服務(wù)器架構(gòu)分析(上)

系統(tǒng) 1962 0

jetty7 作為分析目標(biāo), Jetty 是由一個(gè)或多個(gè) connector 核心組件以及一些列 handler 組件和一個(gè)線程池組成,看一下結(jié)構(gòu)圖:

Jetty 服務(wù)器架構(gòu)分析(上)

C onnector 負(fù)責(zé)監(jiān)聽接收客戶連接請(qǐng)求,而 handler 組件則負(fù)責(zé)處理請(qǐng)求并給予響應(yīng),前面兩個(gè)組件工作所需要的線程資源都直接從線程池 ThreadPool 中獲取。 Jetty Server 可以有多個(gè) connector 在不同的端口上監(jiān)聽客戶請(qǐng)求,而每個(gè) connector 根據(jù)具體的使用場(chǎng)景不同可以有不同的實(shí)現(xiàn),例如采用非阻塞 NioConnector 、阻塞 SocketConnector 等等,而對(duì)于請(qǐng)求處理的 handler 組件,也根據(jù)具體需要可以使用不同的 handler ,此種設(shè)計(jì)提高了 jetty 的靈活性,需要 servlet ,則可以使用 servletHandler ,需要 session ,則再增加一個(gè) sessionHandler ,也就是說我們完全可以不使用 servlet 或者 session ,只要不配置這個(gè) handler 就行了。

要啟動(dòng)和協(xié)調(diào)上訴核心組件工作, Jetty 提供了一個(gè) Server 類來做這個(gè)事情 , 也就是說 Server 是應(yīng)用的起始點(diǎn),他負(fù)責(zé)創(chuàng)建并初始化 connector 、 handler 、 ThreadPool 組件,然后調(diào)用 start 方法啟動(dòng)他們,讓所有組件都處于待命狀態(tài),因此 Server 類是一個(gè)比較重要的 Fa?ade, 值得注意的 Server 類本身也是一個(gè) handler.

一、 組件生命周期

對(duì) jetty 來說,每個(gè)組件都有其生命周期, jetty 采用了統(tǒng)一的 LifeCyle 接口來控制,我們來看下,類圖結(jié)構(gòu):

Jetty 服務(wù)器架構(gòu)分析(上)

c onnector,handler 等組件全部都直接或間接實(shí)現(xiàn)了 LifeCyle 接口,剛才說了 Server 也是 Handler ,同時(shí)他也是啟動(dòng)或協(xié)調(diào)組件工作的類,也就是說 Server 可以通過 LifeCyle 接口控制其他組件的生命周期,通過 start 方法可以啟動(dòng) server, 通過 stop 則關(guān)閉了 server

二、 Connector 組件

Jetty 服務(wù)器架構(gòu)分析(上)

Connnetor 在實(shí)現(xiàn)上有 NIO 、 BIO 兩種實(shí)現(xiàn)方式,并且支持 AJP 協(xié)議、和 SSL 。

三、 Handler 組件

Jetty 服務(wù)器架構(gòu)分析(上)

所有的 handler 組件都實(shí)現(xiàn)了 Handler 接口,可以看到, Handler 是可以以鏈表的形式相互組合的, Server 作為服務(wù)入口,本身也是 handler ,他繼承了 HandlerWrapper 接口,我們看以看到他帶了一個(gè) handler 的引用變量,我們可以注入 ServletHandler 支持 servlet, 注入 WebAppContext 則支持我們的 webapp 應(yīng)用。

四、 啟動(dòng)過程

先看下 jetty 的目錄結(jié)構(gòu)

Jetty 服務(wù)器架構(gòu)分析(上)

看幾個(gè)主要目錄的含義,

Bin 目錄定義了啟動(dòng) jetty 需要的 sh 文件,主要用在 linux 中, windows 中可以直接 java start.jar 啟動(dòng)服務(wù)器,

Contexts 目錄主要放置跟應(yīng)用相關(guān)的 context 配置文件,跟應(yīng)用相關(guān)

etc 目錄放置跟服務(wù)器相關(guān)的配置文件,其中會(huì)定義 contexts 目錄所在的位置

lib 是服務(wù)器所需要的 jar

webapps 是放置應(yīng)用程序的位置,當(dāng)然也可以通過在 contexts 中或者 etc 中自定義

我們從外部啟動(dòng)一個(gè) jetty 服務(wù)器的過程:

Jetty 服務(wù)器架構(gòu)分析(上)

首先從 Start.jar 開始,這個(gè) jar 定義了解析命令行的 Main 這個(gè)類, Main 主要負(fù)責(zé)解析 start.ini 配置文件 ,start.ini 中定義了 JVM 需要的參數(shù)以及 etc 目錄中用到的 xml 配置文件,如下圖:

Jetty 服務(wù)器架構(gòu)分析(上)

然后由 Config 類解析出 stat.ini OPTIONS 選項(xiàng)指定的模塊的包的位置用來加入到 classpath 中,這些模塊的包都定義在 start.config 文件中 ( 該文件可以在 start.jar 包中找到 ) ,截取一個(gè)片段給大家看下:

Jetty 服務(wù)器架構(gòu)分析(上)

這個(gè)文件的配置是需要有一定的語法在里面的,有興趣的可以研究一下,也就是說,通過在 start.ini 中定義 OPTIONS 以及在 start.config 中定義模塊路徑就可以確定把哪些 jar 加入到環(huán)境變量中。

以上準(zhǔn)備工作做完之后,就可以真正開始服務(wù)器的處理了,這時(shí)你有兩種選擇,第一種是在本進(jìn)程中通過反射方式啟動(dòng),但是缺點(diǎn)是 start.ini 中配置的 JVM 參數(shù)就形同虛設(shè)了,因?yàn)? java 進(jìn)程已經(jīng)起來了,不能再按照新的堆參數(shù)等重新設(shè)置了;第二種方式就是重新啟動(dòng)一個(gè)進(jìn)程,就可以重新設(shè)置參數(shù),前面說了, start.ini 中得到了啟動(dòng)參數(shù), start.config 中有了 MainClass Classpath 需要的 jar 包,則可以直接用 java xxx 方式啟動(dòng)了,要使用這種方式啟動(dòng),只需要在 start.ini 中配置 –exec 參數(shù)即可。

MainClass 默認(rèn)是 XmlConfigration 類,當(dāng)然自定義的話,可以在 start.config 中去更改, XmlConfigration 做幾件事情: 1 、根據(jù) start.ini 中的定義的配置文件進(jìn)行解析 , 例如 etc/jetty.xml 2 、通過自己的 IOC 將這些服務(wù)組件組裝在一起 3 、最后調(diào)用 start 方法啟動(dòng)這些組件。

==========================

未完待續(xù).....

Jetty 服務(wù)器架構(gòu)分析(上)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美综合图区 | 最新黄色免费网站 | 99热国产免费 | 国产精品久久久久久久hd | 国产高清视频免费 | 免费视频久久 | 中文字幕在线二区 | 一区二区三区在线视频播放 | 国产精品第一区亚洲精品 | 国产亚洲一区二区三区在线观看 | 久久99亚洲精品久久久久 | 极品美女aⅴ高清在线观看 极品美女一级毛片 | 久久线看观看精品香蕉国产 | 久久影视精品 | 亚洲专区中文字幕 | 国产精品久久综合桃花网 | 日本不卡免费一区 | 国产成人精品s8p视频 | 波多野结衣高清在线播放 | 国产在线播放一区二区 | 欧美一区二区三区在线视频 | 国产女人视频 | 欧美精品blacked中文字幕 | 亚洲国产精品成 | 日韩欧美成人免费中文字幕 | 欧美一级毛片在线观看 | 亚洲春色综合另类网蜜桃 | 91九色视频无限观看免费 | 天天做天天看夜夜爽毛片 | 干亚洲美女 | 国产欧美亚洲三区久在线观看 | 国产精品自在线拍国产 | 亚洲国产精久久小蝌蚪 | 亚洲播放 | 久久精品免费视频观看 | 午夜在线 | 中文字幕中韩乱码亚洲大片 | 欧美一级高清免费a | 亚洲综合涩 | 日本免费一级视频 | 久久精品中文 |