1、jetty介紹
Jetty比較簡(jiǎn)單誓斥,和Tomcat大致相同只洒,本文主要描述jetty9以上版本的使用,jetty9版本對(duì)jetty的目錄結(jié)構(gòu)和使用都有了一些明顯的改動(dòng)劳坑。
Jetty較于Tomcat屬于輕量級(jí)红碑,而且在處理高并發(fā)細(xì)粒度請(qǐng)求的場(chǎng)景下顯得更快速高效。所以使其也擁有眾多使用場(chǎng)景泡垃,合適的選擇應(yīng)該為:云平臺(tái)本身的門戶網(wǎng)站放在Tomcat內(nèi)析珊,而云臺(tái)托管的Java Web應(yīng)該是部署在Jetty內(nèi)的。
2蔑穴、jetty目錄結(jié)構(gòu)
bin目錄是存放在Unix系統(tǒng)下運(yùn)行的shell腳本的忠寻;
etc存放的都是jetty的配置文件;
modules是存放著各個(gè)模塊的存和,以.mod結(jié)尾奕剃,點(diǎn)進(jìn)去可以看到有眾多模塊,不過(guò)大多數(shù)是沒有激活的捐腿,像logs纵朋,webapps這種模塊就是默認(rèn)激活的。
webapps和Tomcat一樣茄袖,用于存放項(xiàng)目的操软;
可以看到截圖中是有個(gè)work目錄的,正常情況下宪祥,解壓jetty是沒有這個(gè)目錄的聂薪,因?yàn)楫?dāng)在webapps中存放項(xiàng)目時(shí)家乘,通過(guò)在根目錄下面運(yùn)行java -jar start.jar命令,啟動(dòng)jetty藏澳,由于jetty本身所在的目錄和運(yùn)行的項(xiàng)目的路徑是分開的仁锯,這方便于丹jetty升級(jí)的時(shí)候,并不影響運(yùn)行的項(xiàng)目翔悠,所以例如在webapps下放置一個(gè)war包业崖,運(yùn)行jetty,該war包解壓出來(lái)的項(xiàng)目是存在于系統(tǒng)的temp的目錄下面的蓄愁,在jetty的目錄中并不能找到腻要,不過(guò)當(dāng)創(chuàng)建一個(gè)work文件夾的時(shí)候,解壓出來(lái)的項(xiàng)目就會(huì)默認(rèn)的存放在work文件夾內(nèi)了涝登。
3雄家、jetty操作及注意事項(xiàng)
Jetty默認(rèn)的端口為8080,修改端口號(hào)也很簡(jiǎn)單胀滚,首先進(jìn)入到j(luò)etty服務(wù)器安裝目錄下會(huì)看到start.ini配置文件忧风,這里就是jetty啟動(dòng)時(shí)加載的配置硕舆,其中包括要加載的模塊选调,超時(shí)時(shí)間配置還有這里的端口號(hào)等暖释。例如:jetty.http.port=8888。
當(dāng)部署項(xiàng)目的時(shí)候剑刑,出來(lái)將項(xiàng)目copy到webapps下面之外媳纬,還需要?jiǎng)?chuàng)建一個(gè)對(duì)應(yīng)的xml的文件,如下圖:
里面的配置文件編寫為:
這是最基礎(chǔ)的配置施掏,同tomcat的server.xml類似钮惠,不過(guò)jetty可以配置更多。
默認(rèn)情況下七芭,jetty會(huì)對(duì)根目錄(也可以配置jetty.base)下webapps/目錄下的內(nèi)容實(shí)現(xiàn)自動(dòng)部署素挽,部署的規(guī)則如下:
隱藏文件(.開頭)和.d結(jié)尾的目錄被忽略;
CVS目錄如”CVS”和”CVSROOT”被忽略狸驳;
任何war包都會(huì)被自動(dòng)部署预明;
任何xml描述文件被認(rèn)為是可部署的;
任何目錄都被認(rèn)為是可部署的耙箍;
同名的war包和目錄同時(shí)存在撰糠,目錄不被部署,僅war包部署辩昆,且認(rèn)為war包引用該目錄阅酪;
同名的war包和xml文件同時(shí)存在,war包不被部署,僅xml文件描述符被部署遮斥,且認(rèn)為該xml文件引用該war包;
同名的目錄和xml文件同時(shí)存在扇丛,目錄不被部署术吗,xml文件被部署,且認(rèn)為xml文件引用該目錄帆精;
關(guān)于更詳細(xì)的說(shuō)明较屿,請(qǐng)參考官方文檔的這里。我主要提醒的是:在webapps目錄中卓练,如果存在同名的目錄隘蝎、war包和xml文件,它們會(huì)被當(dāng)做同一個(gè)工程襟企,部署的優(yōu)先級(jí)是xml文件>war包>目錄嘱么。一定要注意同名,如果不同名顽悼,在webapps下存在一個(gè)war包曼振,同時(shí)存在一個(gè)引用該war包的xml文件,則會(huì)導(dǎo)致重復(fù)部署蔚龙,這就是我跳的坑冰评。
部署時(shí),推薦的做法是木羹,將xml描述文件放到自動(dòng)部署的webapps目錄下甲雅,里面定義war包的路徑、上下文路徑坑填、是否解壓抛人、臨時(shí)目錄、日志文件等脐瑰,然后將war包放在自定義的固定目錄下函匕,項(xiàng)目更新,只需要備份和替換war包蚪黑,重啟jetty即可盅惜。
以上轉(zhuǎn)自:https://blog.csdn.net/weixin_38978094/article/details/87917711
4、個(gè)人增加
demo-base目錄為單獨(dú)項(xiàng)目的一個(gè)實(shí)例忌穿,該目錄就是運(yùn)行某個(gè)項(xiàng)目的jetty_base,其可以在服務(wù)器的任何位置抒寂。
目錄結(jié)構(gòu):
修改訪問的context-path在webapps對(duì)應(yīng)的xml中,修改端口號(hào)在start.d/http.ini中掠剑。
啟動(dòng)該項(xiàng)目:java -jar ${JETTY_HOME}/start.jar
啟動(dòng)時(shí)候也可以指定jetty_base:java -jar ${JETTY_HOME}/start.jar jetty.base=...