Tomcat源碼淺析(一)

Tomcat源碼目錄:

  • Tomcat源碼淺析(一):下載源碼,導入eclipse並且運行
    Tomcat源碼淺析(二):Tomcat原理
    Tomcat源碼淺析(三):自己動手寫一個Tomcat
    Tomcat源碼淺析(四):總結

     

                                 Tomcat源碼淺析(一)

 目錄:   

 

 前言

            Tomcat源碼下載後並不能直接運行,因爲缺少jar,我們需要使用Ant去編譯,構建成一個Eclipse項目後,開始Tomcat源碼學習。

    

 

1.版本

工具 版本 下載Url
apache-tomcat 7.0.90 http://archive.apache.org/dist/tomcat/
apache-ant 1.9.13 https://ant.apache.org/bindownload.cgi
eclipse 4.4.2(Luna) https://www.eclipse.org/downloads/packages/release/luna/sr2/eclipse-ide-java-ee-developers
Java SE 1.7 https://www.oracle.com/technetwork/cn/java/javase/downloads/java-se-jdk-7-download-432154-zhs.html
  1.6 https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html

 

 

 

 

 

 

 

 

2.tomcat源碼下載

                          如圖:

                                                                                                   圖2-1

                                                                                                   圖2-2

                          下載源碼後解壓到目錄:F:\TestCode\workspace\apache-tomcat-7.0.90-src

 

 

3.ANT安裝

    a.ant下載

            如圖:

                                                                                        圖3-a-1

 

             下載後將其解壓到你的硬盤上,例如:D:\developmentTools\apache-ant-1.9.13。

             如圖:

                                                                                              圖3-a-2

 

   b.ant環境配置

          window中設置ant環境變量:

ANT_HOME    D:\developmentTools\apache-ant-1.9.13
path             ;%ANT_HOME%\bin;
classpath      ;%ANT_HOME%\lib;

 

 

 

c.ant環境驗證

                                如圖:

                                                                         圖3-c-1

 ok,到這,an環境就配好了,可以開始構建項目了。

 

4.用Ant將Tomcat源碼構建成Eclipse項目

         a.打開cmd命令窗口。

         b.進到tomcat目錄

(我的目錄):F:\TestCode\workspace\apache-tomcat-7.0.90-src

F:\TestCode\workspace\apache-tomcat-7.0.90-src>ant -p
Buildfile: F:\TestCode\workspace\apache-tomcat-7.0.90-src\build.xml

Main targets:

 build-docs                      Builds all documentation from XML sources
 clean                           Delete the default output folders
 clean-depend                    Deletes the dependencies that are built from source
 cobertura-instrument            Adds Cobertura instrumentation to the compiled bytecode
 cobertura-report                Creates report from gathered Cobertura results
 deploy                          Default. Builds a working Tomcat instance
 dist-deployer                   Create the Tomcat deployer binary
 download-cobertura              Download the Cobertura code coverage tool
 download-compile                Download (and build) components necessary to compile
 download-dist                   Download additional components for a distribution
 download-test-compile           Download additional components for the tests
 download-validate               Download components necessary to validate source
 embed                           Creates the experimental embedded release
 embed-extras                    Embedded packaging for those extras that can use it
 embed-jars                      Create experimental embedded jars
 embed-sources                   Create source jars for embedded jars
 examples-sources                Create examples sources
 extras                          Build all extras packages
 extras-commons-logging          Build JULI for log4j extras package
 extras-commons-logging-prepare  Prepare to build web services extras package
 extras-jmx-remote               Build JMX remote extras package
 extras-webservices              Build web services extras package
 extras-webservices-prepare      Prepare to build web services extras package
 ide-eclipse                     Prepares the source tree to be built in Eclipse
 ide-eclipse-websocket           Prepares the source tree to be built in Eclipse - separate project to build classes that require Java 7
 installer                       Create Windows installer
 javadoc                         Create the Tomcat javadoc
 release                         Create a Tomcat 7 packaged distribution
 test                            Runs the JUnit test cases
 test-apr                        Runs the JUnit test cases for APR. Does not stop on errors.
 test-apr-exists                 Checks for APR lib
 test-bio                        Runs the JUnit test cases for BIO. Does not stop on errors.
 test-nio                        Runs the JUnit test cases for NIO. Does not stop on errors.
 validate                        Uses Checkstyle tool to perform style check for the source code
 validate-eoln                   Validate that the source files have correct line ends
Default target: deploy

F:\TestCode\workspace\apache-tomcat-7.0.90-src>

         鍵入:ant  ide-eclipse  

   如下:

F:\TestCode\workspace\apache-tomcat-7.0.90-src>ant ide-eclipse
Buildfile: F:\TestCode\workspace\apache-tomcat-7.0.90-src\build.xml

download-compile:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/commons-daemon-1.1.0/commons-daemon-1.1.0.jar

downloadgz-2:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/commons-pool-1.5.7-src/build.xml

downloadgz-2:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/commons-dbcp-1.4-src/build.xml

downloadgz-2:

build-prepare:
   [delete] Deleting directory F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\temp
    [mkdir] Created dir: F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\temp

build-manifests:

build-tomcat-dbcp:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/ecj-4.4.2/ecj-4.4.2.jar

downloadfile-2:

extras-prepare:

extras-webservices-prepare:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/jaxrpc-1.1-rc4/geronimo-spec-jaxrpc-1.1-rc4.jar

downloadfile:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/wsdl4j-1.6.2/wsdl4j-1.6.2.jar

downloadfile:

download-test-compile:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/junit-4.11/junit-4.11.jar

downloadfile:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/hamcrest-1.3/hamcrest-core-1.3.jar

downloadfile:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/easymock-3.2/easymock-3.2.jar

downloadzip:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/cglib-2.2.3/cglib-nodep-2.2.3.jar

downloadfile:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/objenesis-1.2/objenesis-1.2.jar

downloadzip:

ide-eclipse:
     [echo] Eclipse project files created.
     [echo] Read the Building page on the Apache Tomcat documentation site for details on how to configure your Eclipse workspace.

BUILD SUCCESSFUL
Total time: 1 second

F:\TestCode\workspace\apache-tomcat-7.0.90-src>

    

會出現一些問題,無法構建,編譯失敗,其實都是小問題,有解決辦法見目錄 6常見問題

 

 

          再次鍵入ant 對bulid.xml 編譯,我們能得到一個tomcat工具,看看是不是很熟悉,

  你會發現,再次ant 構建,編譯完成後,會在源碼目錄下生成output文件夾,這就是我們平時用來發布web項目的Tomcat工具

  運行Tomcat的方法,就跟平時手動運行

  F:\TestCode\workspace\apache-tomcat-7.0.90-src/output/build/bin/startup.bat  一樣,就啓動Tomcat

F:\TestCode\workspace\apache-tomcat-7.0.90-src>ant
Buildfile: F:\TestCode\workspace\apache-tomcat-7.0.90-src\build.xml

build-prepare:
   [delete] Deleting directory F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\temp
    [mkdir] Created dir: F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\temp

download-compile:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/commons-daemon-1.1.0/commons-daemon-1.1.0.jar

downloadgz-2:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/commons-pool-1.5.7-src/build.xml

downloadgz-2:

proxyflags:

setproxy:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/commons-dbcp-1.4-src/build.xml

downloadgz-2:

build-prepare:
   [delete] Deleting directory F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\temp
    [mkdir] Created dir: F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\temp

build-manifests:

build-tomcat-dbcp:

testexist:
     [echo] Testing  for C:\Users\Administrator/tomcat-build-libs/ecj-4.4.2/ecj-4.4.2.jar

downloadfile-2:

compile-prepare:

download-validate:

validate:

compile-java6:

guess-java7:

check-java7:

compile-java7:

compile:

build-manifests:

package-java7:

package:

build-docs:
     [xslt] Transforming into F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\webapps\docs
     [xslt] Transforming into F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\webapps\docs\appdev
     [xslt] Transforming into F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\webapps\docs\funcspecs
     [xslt] Transforming into F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\webapps\docs\config
     [xslt] Transforming into F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\webapps\docs\architecture
     [xslt] Transforming into F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\webapps\docs\tribes

compile-webapp-examples:

deploy:
     [copy] Copying 1 file to F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\conf

examples-sources:
     [echo] Building Tomcat JDBC pool libraries

prepare:

download:

build-src:

build:

BUILD SUCCESSFUL
Total time: 6 seconds

F:\TestCode\workspace\apache-tomcat-7.0.90-src>

 

build-docs:
     [xslt] Transforming into F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\webapps\docs
     [xslt] Transforming into F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\webapps\docs\appdev
     [xslt] Transforming into F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\webapps\docs\funcspecs
     [xslt] Transforming into F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\webapps\docs\config
     [xslt] Transforming into F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\webapps\docs\architecture
     [xslt] Transforming into F:\TestCode\workspace\apache-tomcat-7.0.90-src\output\build\webapps\docs\tribes
通過構建,會從svn上獲取tomcat源碼運行的jar包。

目錄:C:\Users\Administrator/tomcat-build-libs

 

 

 

導入eclipse

打開eclipse,File->import->existing Projects into workspace,找到源碼 F:\TestCode\workspace\apache-tomcat-7.0.90-src,點擊finish

源碼導入以後 ,在Problem視圖中會發現紅色歎號,報錯了,這個是因爲 缺少相關jar包導致,在Java Build Path下發現不存在的jar

重新引入這次jar,ant構建的時候,會從svn中下載這些jar,我的下載目錄是:C:\Users\Administrator/tomcat-build-libs

 

6.會碰見的問題:

問題1:
問題2:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章