{{{ #!html
分析 Jetty
}}} [[PageOutline]] = 0. 前言 = * [wiki:waue/2009/0811 jetty的安裝方法與介紹] * 以下皆以用本人所最簡化的jetty包做說明,並使用jetty 5.14 版本 * [http://trac.nchc.org.tw/cloud/wiki/Jetty-Demo 所用的Jetty套件為 Jetty_demo ] , 檔案下載為 [http://trac.nchc.org.tw/cloud/raw-attachment/wiki/Jetty-Demo/jetty_demo.tar.gz 點我下載jetty_demo] = 1. Jetty = * jetty 最簡單的啟動方式為 {{{ java -jar start.jar etc/jetty.xml }}} 分析: || java -jar || 為java 執行一個包好後的執行檔所用的命令 || || || start.jar || start.jar 為java函式包,裡面鑲嵌呼叫jetty的code || 於 ch 3 說明|| || etc/jetty.xml || jetty.xml是jetty的設定檔 ||於 ch 4 說明|| * 當然手冊上有寫說jetty還可以用 '''java org.mortbay.jetty.Server etc/jetty.xml ''' 此方法看似很簡潔,然而卻要設定好完整的classpath 於environment內才可以正常執行。 = 2. Jetty 目錄結構分析 = 最簡化的jetty目錄結構(jetty-demo)如下: ||etc/ ||jetty 設定檔 || 設定檔為xml結構 || ||ext/ ||jetty的外部函式庫 || 無此目錄會引發LogFactory error || ||lib/ ||jetty基本函式庫 || || ||logs/ ||日誌檔 || 一開始資料夾內可以為空|| ||start.jar ||開始檔 || || ||webapps/ ||網頁目錄 || || = 3. 分析 start.jar = jar 檔的結構如下 ||META-INF/ || MANIFEST.MF || 3.1 || ||start/ || || || || || Main.class|| 3.2|| || || Monitor.class|| || || || Classpath.class|| || || || start.config|| 3.3 || 由於start.jar 內的 MANIFEST.MF 已經告知java : Main class 在哪,因此java會直指Main.class來執行。 看似Main.class是整個jetty的驅動程式,然而Main.class卻可以看成一個分析start.config的parser, [[BR]] start.config 記載著jetty_home, classpath 該怎麼設定等等重要的參數,Main.class在去分析, [[BR]] 分析完後,再搭載著這些重要的資訊,以驅動jetty最主要的核心檔 org.mortbay.jetty.Server [[BR]] (包在 $jetty-demo/lib/org.mortbay.jetty.jar內) === 3.1 MANIFEST.MF === {{{ #!text Manifest-Version: 1.0 Main-Class: start.Main }}} 告知java,main function在哪 === 3.2 Main.class === [wiki:waue/2009/0812d/Main_java Main.java] === 3.3 start.config === [wiki:waue/2009/0812d/start_config start.config] = 4 分析 jetty.xml = * [wiki:waue/2009/0812d/jetty_xml jetty.xml] * [wiki:waue/2009/0812d/webdefault_xml webdefault.xml]