wiki:waue/2009/0812

Version 9 (modified by waue, 15 years ago) (diff)

--

jetty

0. 前言

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

Manifest-Version: 1.0
Main-Class: start.Main

告知java,main function在哪

3.2 Main.class

Main.java

3.3 start.config

start.config

4 分析 jetty.xml