close
Warning:
Can't synchronize with repository "(default)" (Unsupported version control system "svn": /usr/lib/python2.7/dist-packages/libsvn/_repos.so: failed to map segment from shared object: Cannot allocate memory). Look in the Trac log for more information.
- Timestamp:
-
Aug 13, 2009, 12:17:15 PM (16 years ago)
- Author:
-
waue
- Comment:
-
--
Legend:
- Unmodified
- Added
- Removed
- Modified
-
|
v8
|
v9
|
|
| 8 | 8 | |
| 9 | 9 | |
| 10 | | = 1. 前言 = |
| | 10 | = 0. 前言 = |
| | 11 | |
| 11 | 12 | * [wiki:waue/2009/0811 jetty的安裝方法與介紹] |
| 12 | 13 | * 以下皆以用本人所最簡化的jetty包做說明,並使用jetty 5.14 版本 |
| | 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] |
| 13 | 15 | |
| 14 | | = 2. Jetty 分析 = |
| | 16 | = 1. Jetty = |
| 15 | 17 | |
| 16 | | 最簡化的jetty目錄結構可以如下: |
| | 18 | * jetty 最簡單的啟動方式為 |
| | 19 | |
| | 20 | {{{ |
| | 21 | java -jar start.jar etc/jetty.xml |
| | 22 | }}} |
| | 23 | |
| | 24 | 分析: |
| | 25 | |
| | 26 | || java -jar || 為java 執行一個包好後的執行檔所用的命令 || || |
| | 27 | || start.jar || start.jar 為java函式包,裡面鑲嵌呼叫jetty的code || 於 ch 3 說明|| |
| | 28 | || etc/jetty.xml || jetty.xml是jetty的設定檔 ||於 ch 4 說明|| |
| | 29 | |
| | 30 | * 當然手冊上有寫說jetty還可以用 '''java org.mortbay.jetty.Server etc/jetty.xml ''' 此方法看似很簡潔,然而卻要設定好完整的classpath 於environment內才可以正常執行。 |
| | 31 | |
| | 32 | = 2. Jetty 目錄結構分析 = |
| | 33 | |
| | 34 | 最簡化的jetty目錄結構(jetty-demo)如下: |
| 17 | 35 | |
| 18 | 36 | ||etc/ ||jetty 設定檔 || 設定檔為xml結構 || |
| … |
… |
|
| 23 | 41 | ||webapps/ ||網頁目錄 || || |
| 24 | 42 | |
| 25 | | |
| 26 | | jetty的最簡單的啟動方式為 |
| 27 | | |
| 28 | | {{{ |
| 29 | | java -jar start.jar etc/jetty.xml |
| 30 | | }}} |
| 31 | | |
| 32 | | * start.jar 為java函式包,裡面鑲嵌呼叫jetty的code |
| 33 | | * jetty.xml是jetty的設定檔 |
| 34 | | * 當然手冊上有寫說jetty還可以用 '''java org.mortbay.jetty.Server etc/jetty.xml ''' 此方法看似很簡潔,然而卻要設定好完整的classpath 於environment內才可以正常執行。 |
| 35 | | |
| 36 | | == 2.1 分析 start.jar == |
| | 43 | = 3. 分析 start.jar = |
| 37 | 44 | |
| 38 | 45 | jar 檔的結構如下 |
| 39 | 46 | |
| 40 | | ||META-INF/ || MANIFEST.MF || 2.1.1 || |
| | 47 | ||META-INF/ || MANIFEST.MF || 3.1 || |
| 41 | 48 | ||start/ || || || |
| 42 | | || || Main.class|| 2.1.2|| |
| | 49 | || || Main.class|| 3.2|| |
| 43 | 50 | || || Monitor.class|| || |
| 44 | 51 | || || Classpath.class|| || |
| 45 | | || || start.config|| 2.1.3 || |
| | 52 | || || start.config|| 3.3 || |
| 46 | 53 | |
| 47 | | === 2.1.1 MANIFEST.MF === |
| | 54 | 由於start.jar 內的 MANIFEST.MF 已經告知java : Main class 在哪,因此java會直指Main.class來執行。 |
| | 55 | |
| | 56 | 看似Main.class是整個jetty的驅動程式,然而Main.class卻可以看成一個分析start.config的parser,<br> |
| | 57 | start.config 記載著jetty_home, classpath 該怎麼設定等等重要的參數,Main.class在去分析,<br> |
| | 58 | 分析完後,再搭載著這些重要的資訊,以驅動jetty最主要的核心檔 org.mortbay.jetty.Server <br> |
| | 59 | (包在 $jetty-demo/lib/org.mortbay.jetty.jar內) |
| | 60 | |
| | 61 | === 3.1 MANIFEST.MF === |
| 48 | 62 | {{{ |
| 49 | 63 | #!text |
| 50 | 64 | Manifest-Version: 1.0 |
| 51 | | |
| 52 | 65 | Main-Class: start.Main |
| 53 | 66 | }}} |
| … |
… |
|
| 55 | 68 | 告知java,main function在哪 |
| 56 | 69 | |
| 57 | | === 2.1.2 Main.class === |
| | 70 | === 3.2 Main.class === |
| 58 | 71 | |
| 59 | 72 | [wiki:waue/2009/0812d/Main_java Main.java] |
| 60 | 73 | |
| 61 | 74 | |
| 62 | | === 2.1.3 start.config === |
| | 75 | === 3.3 start.config === |
| 63 | 76 | [wiki:waue/2009/0812d/start_config start.config] |
| 64 | 77 | |
| 65 | | == 2.2 分析 jetty.xml == |
| | 78 | = 4 分析 jetty.xml = |
| | 79 | |
| 66 | 80 | * [wiki:waue/2009/0812d/jetty_xml jetty.xml] |
| 67 | 81 | * [wiki:waue/2009/0812d/webdefault_xml webdefault.xml] |