Tomcat源碼分析 -- 準(zhǔn)備工作

一、本篇目錄

  • tomcat簡(jiǎn)介
  • tomcat目錄結(jié)構(gòu)
  • tomcat源碼調(diào)試

二、tomcat簡(jiǎn)介

兩句話簡(jiǎn)單介紹下:

Tomcat是Apache 軟件基金會(huì)(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun 和其他一些公司及個(gè)人共同開(kāi)發(fā)而成。

它是一個(gè)小型的輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問(wèn)用戶不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試JSP 程序的首選。

三、tomcat目錄結(jié)構(gòu)

tomcat的下載安裝有很多教程,不再贅述。

現(xiàn)在的tomcat已經(jīng)到9了,當(dāng)tomcat下載安裝完成后,其目錄大致如下:

除了上面的文件夾,還有四個(gè)文件:

先介紹后4個(gè)文件:

  1. LICENSE:就是許可證,里面記錄了tomcat的一些條款等等。
  2. NOTICE:里面記錄了tomcat的新的通知,公告。
  3. RELEASE-NOTES:里面記錄的是發(fā)行版本的說(shuō)明,一些捆綁的API,新特性等等。
  4. RUNNING.txt:記錄了tomcat的運(yùn)行環(huán)境以及怎樣配置參數(shù),變量,啟動(dòng)等等。

再介紹文件夾(并不全):

3.1、bin文件夾

bin文件夾下面放的是可執(zhí)行性文件,其中:bat/exe文件是Windows下可執(zhí)行的腳本文件。sh文件時(shí)Linux/Unix下可執(zhí)行的腳本文件。

  1. bootstrap.jar:這個(gè)jar包是引導(dǎo)程序jar包,是tomcat的入口。
  2. catalina.bat:一個(gè)重要腳本,這個(gè)腳本完成了很多基本操作,如啟動(dòng)、關(guān)閉等,catalina.bat都參與其中,Windows中運(yùn)行。
  3. catalina.sh:文件作用同catalina.bat,在Linux/Unix系統(tǒng)下運(yùn)行。
  4. catalina-tasks.xml:配置文件,主要是引入各種jar包。
  5. configtest.bat:檢測(cè)語(yǔ)法是否正確的腳本文件。
  6. configtest.sh:同上。
  7. service.bat:?jiǎn)?dòng)tomcat服務(wù)。和注冊(cè)tomcat服務(wù)那塊有關(guān)系。
  8. setclasspath.bat:設(shè)置classpath的腳本,在catalin.bat腳本中調(diào)用,可以設(shè)置java_home,jre_home等。
  9. shutdown.bat:主要是檢查catalina.bat執(zhí)行所需環(huán)境,并調(diào)用catalina.bat批處理文件關(guān)閉tomcat服務(wù)。
  10. startup.bat:主要是檢查catalina.bat執(zhí)行所需環(huán)境,并調(diào)用catalina.bat 批處理文件啟動(dòng)tomcat服務(wù)。
  11. tcnative-1.dll:加速器組件,可以提高性能。
  12. tomcat-native.tar.gz:里面放的是tomcat本地的library。
  13. tool-wrapper.bat:工具包裝腳本。
  14. version.bat:一般是用來(lái)判斷系統(tǒng)版本獲取系統(tǒng)版本信息等。

3.1、conf文件夾

存放tomcat服務(wù)器的配置文件。

  1. catalina.policy:當(dāng)Tomcat在安全模式下運(yùn)行,此文件為默認(rèn)的安全策略配置。
  2. catalina.properties:catalina環(huán)境變量配置。
  3. context.xml:用于定義所有Web應(yīng)用均需要加載的Context配置,如果Web應(yīng)用指定了自己的context.xml,那么該文件的配置會(huì)被覆蓋。
  4. logging.properties:日志配置文件,可修改日志級(jí)別和日志路徑等。
  5. server.xml:核心配置文件,用于配置鏈接器、監(jiān)聽(tīng)端口、處理請(qǐng)求的虛擬主機(jī)等,可以說(shuō),tomcat根據(jù)該配置文件創(chuàng)建服務(wù)器實(shí)例。
  6. tomcat-users.xml:tomcat配置用戶的文件,用于定義tomcat默認(rèn)用戶及角色映射信息,tomcat的manage模塊使用該文件中定義的用戶進(jìn)行安全認(rèn)證。
  7. web.xml:tomcat中所有應(yīng)用默認(rèn)的部署描述文件,主要定義了基礎(chǔ)Servlet和MIME映射,如果應(yīng)用中不包含web.xml,tomcat將使用此文件初始化部署描述,反之,tomcat會(huì)將默認(rèn)部署描述與自定義配置進(jìn)行合并。

server.xml文件重點(diǎn)關(guān)注一下:

里面詳細(xì)配置可以參考這篇文章:
server.xml配置詳解

3.3、lib文件夾

tomcat依賴庫(kù)目錄,包含tomcat服務(wù)器運(yùn)行環(huán)境依賴jar包。

3.4、logs文件夾

默認(rèn)的日志存放文件夾。

3.5、webapps文件夾

默認(rèn)的web應(yīng)用部署目錄。

3.6、work文件夾

web應(yīng)用jsp代碼生成和編譯臨時(shí)目錄。清空work目錄,然后重啟tomcat,可以達(dá)到清除緩存的作用。sp文件在被翻譯后,保存在當(dāng)前這個(gè)目錄下,session對(duì)象被序列化之后保存的位置。

四、tomcat源碼調(diào)試

前面對(duì)tomcat做了一些簡(jiǎn)單的認(rèn)識(shí),下面將tomcat源碼調(diào)試環(huán)境搭建起來(lái)。

可以參考官網(wǎng)的搭建方法,這里是按照網(wǎng)上的maven管理的方式搭建。

大概步驟是:

1.下載tomcat 9的源碼,一般是下載頁(yè)面最底部的tar包或zip包源碼;

2.然后解壓在文件夾下新建pom.xml,內(nèi)容大致如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>me.w1992wishes.tomcatwork</groupId>
    <artifactId>Tomcat9.0</artifactId>
    <name>Tomcat9</name>
    <version>9.0</version>

    <build>
        <finalName>Tomcat9</finalName>
        <sourceDirectory>java</sourceDirectory>
        <resources>
            <resource>
                <directory>java</directory>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <version>1.9.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-apache-log4j</artifactId>
            <version>1.9.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-commons-logging</artifactId>
            <version>1.9.5</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.rpc</groupId>
            <artifactId>javax.xml.rpc-api</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jdt.core.compiler</groupId>
            <artifactId>ecj</artifactId>
            <version>4.4</version>
        </dependency>
    </dependencies>
</project>

3.接著導(dǎo)入idea,設(shè)置啟動(dòng)項(xiàng):

Main Class:org.apache.catalina.startup.Bootstrap;
VM options:填寫(xiě)解壓的tomcat路徑;

4.因?yàn)閣ebapps下的應(yīng)用有些配置加載出錯(cuò),可以先將webapps里面的文件全部刪除,自己新建一個(gè)demo文件夾,然后在里面新建一個(gè)index.html,并不影響源碼閱讀。

5.JDTCompiler.java類(lèi)中可能會(huì)有報(bào)錯(cuò),有部分代碼使用CompilerOptions.VERSION_1_9來(lái)判斷java虛擬機(jī)版本,里面涉及1.9版本的jvm,如果識(shí)別不了,可以刪掉。

6.最后編譯,運(yùn)行,訪問(wèn)localhost:8080/demo。

詳過(guò)程可以參考這篇博文:

【Tomcat9源碼分析】源碼下載、編譯與調(diào)試

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容