最近打算開始研究一下Tomcat的工做原理,拜讀一下源碼。因此先從編譯源碼開始了。儘管網上有那麼多的資料,可是老是以爲,本身研究一遍,寫一遍,在動手作一遍可以讓咱們更加深刻的瞭解。如今整個社會都流行着浮躁的風氣,各類速成班,催熟劑的讓咱們難易靜下心來去好好的研究一下技術。如今想一想高中時候雖然很累,可是很充實。知道本身天天都幹了些什麼,再想一想如今,是否還常常寫字,寫文章?是否還常常讀書。我在通過了很長一段時間沉浸在只是上下班,重複以往的無聊日子後,終於明白了,學習讀書依然要繼續,要好好爲本身充電來充實本身。不要一直沉浸在本身的世界中沾沾自喜,要居安思危。html
再說說編譯tomcat8.0源碼的過程,本身在研究編譯的過程也是遇到了不少的彎路曲折java
第一步:首先要安裝jdk,這個相信你們幹這一行的都會安裝。我編譯的是tomcat8.0,jdk用的1.7。由於我編譯tomcat7時用的jdk7,結果編譯出錯,查閱資料說是jdk版本過高了。因此我就用了比jdk高一個版本的tomcat8來編譯。apache
第二步:先去Apache-Tomat官網下載8.0版本的tomcat,我以前tomact7和tomcat8的源碼都下了。下載完源碼後解壓縮。tomcat
第三步:編譯tomcat還須要另外一個利器。那就是ant。ant也是apache的一款工具,是一個將軟件編譯、測試、部署等步驟聯繫在一塊兒加以自動化的一個工具,大多用於Java環境中的軟件開發。我下載的是apache-ant-1.9.6。下載完了要配置ant的環境變量。配置一個ANT_HOME ,路徑是ant存放的位置,如放到了D:/software/apache-ant-1.9.6。再把ANT_HOME配置到環境變量path下。配置完後再cmd命令窗口中執行ant -version服務器
第四步:在該目錄下新建一個libs的文件夾。該文件夾就是tomcat依賴的jar包的下載位置。將解壓的tomcat源碼中的build.properties.default文件名改成build.properties。打開該文件找到base.path配置項,把該配置項的路徑改成依賴包的位置。如:libs的目錄是, C:/tomcat8.0-src/libs。那麼build.pase=C:/tomcat8.0-src/libs。注意若是你拷貝進去的路徑是baild.pase=C:\tomat8.0-src\libs。那麼這樣是會報錯的。應該把\轉義一下。因此路徑應該是build.pase=C:\\tomat8.0-src\\libseclipse
第五步:CTRL+R打開cmd命令窗口,進入到所解壓的tomcat8.0的源碼的位置。而後執行命令 ant download。我在執行該命令的時候報錯了。可是也給我下載了一下jar包工具
可是後面的一些jar包就下載不下來了,試了幾回依然沒有成功。因此就直接日後操做了。學習
第六步:執行命令:ant 執行該命令會花費一些時間,但最終會出現build successful的字符串。代表編譯成功。測試
而且會在該源碼目錄下自動新增一個output的文件夾,該文件夾下的內容就是編譯的tomcatui
說是
第七步:將源碼導入eclipse中,新建一個java項目。如:tomcat8.0-src。而後將把解壓源碼中的java和test兩個源碼文件夾import到新建的tomcat8.0-src工程中。
第八步:把導入的java和test兩個文件標記爲source folder,右鍵選擇文件夾->Build Path->Use as Source Folder。標記爲source folder後兩個代碼目錄都出現了錯誤。這是由於缺乏依賴的jar包
第九步:導入依賴的jar包
ant.jar:在你安裝的ant目錄:ANT_HOME/lib下。
jaxrpc.jar:在eclipse下的/plugin/ javax.xml.rpc_xxx(版本號)/lib/目錄下。
org.eclipse.jdt.core_3.10.2.v20150120-1634.jar:在eclipse的plugin目錄下。Eclipse版本不一樣,名字可能不一樣。
wsdl4j-1.5.1.jar:能夠從網上下,這個地方我是從以前執行ant download命令時自動下載下來的。
右鍵tomcat8->Build Path->Configuration Build Path。導入上面的幾個包,java目錄下就沒有錯了,若是test目錄下還有錯,能夠註釋掉錯誤的文件。
第十部:執行org.apache.catalina.startup下的Bootstrap,這裏面有main方法,會啓動tomcat源碼。執行後結果報錯
說是服務的實例沒有配置。這是由於當前項目路徑下沒有lib和conf這兩個文件夾,從而找不到服務器配置文件server.xml,固然也就不能實例化服務器了。解決方法:
a、 第一種方法把前面編譯生成的output目錄下的/build/下的lib和conf兩個目錄拷貝到tomcat下,這時就能夠直接啓動了。
b、 第二種方法就是添加VM參數,指定這兩個文件夾的具體路徑,用VM的-D參數指定catalina.home屬性值爲具體的路徑,具體方法以下:
Run as -> Run Configuration... - > Arguments -> VM arguments中設置:-Dcatalina.home=」 C:\tomcat8.0-src\output\build」,而後Run就能夠啓動了。
第十一步:驗證項目是否啓動成功。地址欄中輸入localhost:8080/,而後回車,端口是能夠自由設置的。這裏用的默認端口8080
至此tomcat源碼編譯完成,固然其中還遇到過一些別的錯誤,這裏就不一一列舉了。本身也是摸索着來的,也借鑑了不少的文章,以下:
http://www.cnblogs.com/dlutfengyu/p/5346080.html http://www.cnblogs.com/xlbu/p/3750551.html