天天看點

将tomcat源碼導入eclipse

前言:

寫完了socket小應用的原始版本,中間還有好多預想的功能沒有實作,在寫的過程中也發現了很多問題。因為前面有粗略的看過tomcat實作原了解析,知道tomcat其實也是純java寫的web伺服器,而且用的也是socket通信。是以特别想看下tomcat是如何處理這些問題的。

主要步驟:

1. 去apache官網下載下傳對應的tomcat版本源碼(我這裡下載下傳的是9.0.0.M9)  

http://tomcat.apache.org/download-90.cgi

2. 解壓後的源碼是沒法作為工程直接導入eclipse的。需要使用ant進行編譯,是以這裡需要去ant官網下載下傳ant對應版本。

http://ant.apache.org/bindownload.cgi

然後配置ANT_HOME、path、classpath。

3. 在解壓後的tomcat源碼的根路徑打開控制台,并且輸入 ant ide-eclipse進行編譯。此時會下一堆依賴的jar包。這些jar包下載下傳到的路徑可以通過打開跟路徑下build.properties.default檔案中的base.path指定,預設的值為${user.home}/tomcat-build-libs。其實在C:\Users\Administrator\tomcat-build-libs路徑下。這裡為了将下載下傳下來的依賴的jar包放到tomcat源碼路徑,修改base.path為E:/SourceCode/Code/tomcat/apache-tomcat-9.0.0.M9-src/build-libs。

4. 如果用的是最新版本的tomcat源碼,那麼在編譯的過程中可能會出現:[get] Error getting https://objenesis.googlecode.com/files/objenesis-1.2-bin.zip  的錯誤。這個很明顯是天朝防火牆造成的。我這裡将下載下傳到的上傳到了下面百度雲的位址: 

http://pan.baidu.com/s/1c2oO0so

。下載下傳完成之後,我們可以修改該檔案的下載下傳位址為本地,修改後格式如下:

# ----- objenesis, used by EasyMock, version 1.2 or later -----

objenesis.version=1.2

objenesis.home=${base.path}/objenesis-${objenesis.version}

objenesis.loc=http://localhost:8080/objenesis-${objenesis.version}-bin.zip

objenesis.jar=${objenesis.home}/objenesis-${objenesis.version}.jar

這樣指定檔案的下載下傳位址為本地。我們隻需将下載下傳到的jar包放到本地tomcat的 webapps/ROOT目錄中,然後啟動tomcat伺服器即可。當然更簡便的方法,我們其實可以直接删掉這一段要執行的過程,然後将下載下傳到的zip包直接解壓到前面重新指定的base.path路徑下。這樣會發現多了一個objenesis-1.2目錄,并且目錄下有3個jar包。

最後我們隻要再重新執行一次 ant ide-eclipse,保證build success即可。

5. 在eclipse中導入對應的項目源碼跟路徑,可以發現此時eclipse可以将其作為一個工程導入了。導入進去一般還會存在編譯錯誤。這時候需要考慮3個build path的設定:

一是jre的版本以及java compile的版本

二是ANT_HOME的設定:具體步驟如下圖

将tomcat源碼導入eclipse

三是設定TOMCAT_LIBS_BASE,步驟同上,最後選擇的路徑就是base.path配置的路徑。

6.在eclipse中clean整個工程,這時候應該可以編譯成功。然後找到BootStrap.java類,作為java程式運作。運作成功之後就可以通過: http://localhost:8080/ 通路了。

将tomcat源碼導入eclipse

至此,可以通過debug逐漸分析tomcat運作過程了。

黎明前最黑暗,成功前最絕望!

下一篇: Redis(1):入門

繼續閱讀