Jetty使用心得筆記
儿個月前試用了一陣子Jetty,當時對Jetty印象蠻好的。如果需要的是一個非常輕量或是可模組化設定的APServer,可以考慮這東東。不過...我自己用一陣子後還是換回Tomcat就是了...XD...這不是說Jetty不好,而是因為剛好Tomcat上有一些現成Webbase的APServer monitor工具,但是Jetty沒有。我又蠻需要這些工具,所以就還是換回Tomcat了。有時...好維護比高效來的重要呀...<(T_T)>
癈言結束,Jetty筆記(以7.4.5版本為基準)正文開始~~~
==================================================================
快速上手簡介
請參考JavaWorld@TW的這篇文章
==================================================================
使用的好處,我個人覺的有這儿點
1.速度快
2.功能模組化,可以只啟用想要用的功能(e.g.讓它只支援Servlet,不支援JSP)
3.還有很多,請上官網查詢
==================================================================
Jetty比較重要的子目錄與相關說明如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
==================================================================
Jetty啟動方式
1.Standalone:在Console下指令啟動
2.Embedded:寫JavaCode呼叫Jetty相關class來啟動(可參考這裡的文件)
Standalone方式啟動與關閉Jetty
1 2 |
|
也可以用指定StopPort的方式來啟動與關閉Jetty,範例如下
1 2 3 4 |
|
輸入"java-jar start.jar --help",可以得到Jetty在Console指令下的所有用法與參數說明。其中除了上述啟動與關閉Jetty的指令外,還有儿項比較有用的指令,分述如下。
1 2 |
|
==================================================================
"java -jar start.jar"指令的啟動流程如下
step1.載入/JettyInstallFolder/start.ini設定檔
step2.依據start.ini內容戴入各項Jetty設定
step3.載入/JettyInstallFolder/etc/webdefault.xml的設定供"所有"webapp使用
step4.載入各個webapp的web.xml設定
start.ini的內容其實只是指定Jetty要戴入哪些功能模組(e.g."etc/jetty.xml"、"etc/jetty-ssl.xml"),如果針對這些模組有客制化的需求,必需到各別模組設定檔中調整。
webdefault.xml的設定值會在所有webapp啟動前被載入,如果有各別webapp在web.xml裡都一致的設定,可以將它移至此設定檔。
jetty.xml裡比較重要的參數說明如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
webdefault.xml裡比較重要的參數說明如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
|
如果希望Jetty啟動時不要載入start.ini裡的設定,可以先刪除start.ini設定檔,並在啟動時指定明確的載入參數(e.g."java -jar start.jar OPTIONS=Server,jsp,jmx etc/jetty.xml/etc/jetty-jmx.xml"),這樣就不會載入start.ini裡的設定。不過在start.ini設定檔中設好各項設定是比較方便的作法。
==================================================================
Webapp若要deploy至Jetty,先將該webapp打包成war後,丟到webapps目錄裡即完成deploy動作(還有其它的方式,但是這是最簡單的方式)
如果要把某個webapp當成Jetty的RootApp(代表"http://localhost:8080/"的url指到該webapp),可將該webapp更名成root.war放至"webapp"目錄,並刪除"contexts"目錄裡的所有的檔案與子目錄。接著再重啟Jettyserver,就會把root.war當成是RootApp。
==================================================================
Jetty在eclipse上有官方的plugin可供安裝(參考這份文件)。以前聽人說官方的效能很差,整合不好,很容易就當掉,多數人比較推"run-jetty-run"這個plugin;不過我自已試了官方最新版倒是沒有這些問題,覺的可以推薦給大家試試。
==================================================================
要限制Jetty使用的記憶體大小可以用下面的指令達成
java -Xms64m -Xmx128m -jar start.jar
==================================================================
使用JConsole來reomote monitorjetty有二種方式,分述如下
<方式1>:使用JVM本身提供的JMX功能,步驟如下
step1.利用文字編輯器撰寫一個jmxremote.password 設定檔(參考下面範例內容),並設定檔案的讀寫權限(在windows上執行的話,要確定硬碟的資料格式一定要是NTFS,FAT32格式是無法設定檔案權限的。此外,Windows上改檔案權限方式比較麻煩(可參考這份文件),在Linux上則是用chmod指令去改)
1 |
|
step2.利用文字編輯器撰寫一個jmxremote.access 設定檔(參考下面範例內容)
1 |
|
step3.Jetty在啟動時,利用下述的指令啟動JMX功能
1 2 3 4 5 6 7 8 9 |
|
step4.Jetty啟動後,可利用JConsle連進Jetty觀察系統狀況(Jconsole的連線設定範例如下)。
1 2 3 |
|
硬大濕大師有寫一篇<方式1>的相關文章,建議大家去看一看,了解其中的一些細節
<方式2>:使用Jetty提供的JMX功能,步驟如下
step1.在start.ini內把jetty-jmx.xml設定檔啟用。在start.ini設定檔裡"Configurationfiles"設定區塊的第一行加進"etc/jetty-jmx.xml"(一定要放在這個區塊的第一行,不然JMX功能會失效)
step2.在jetty-jmx.xml設定檔內把所有mark起來的功能unmark,啟用RMI功能。
Jetty本身提供的功能無法設定以帳號、密碼方式來進行登入驗証,只要連上線就直接登入系統,使用上要小心。
==================================================================
Jetty的TestRealm功能是用來設定使用者群組與權限,相關說明可參考這裡
==================================================================
如果想對Jetty服務器架構及性能進行優化,可以參考之前我找到的這份Slide
==================================================================
Jetty官網: http://www.eclipse.org/jetty/
Jetty官方文件: http://wiki.eclipse.org/Jetty