搭建一個tomcat的源碼閱讀環(huán)境
受同事面試情況的影響,覺得是時候看一會源代碼了,選擇了最熟悉的Tomcat(現(xiàn)在使用最多的Servlet容器),里面運用了很多設(shè)計模式和很好的編程思想,代碼非常優(yōu)秀,值得學(xué)習(xí),并且熟悉了之后也方便以后工作中定位問題。
前期準(zhǔn)備
本機環(huán)境:
- 操作系統(tǒng)版本:10.11.5版本mac os x
- jdk版本:1.8.0_92
- Maven 3
- Tomcat7
去官網(wǎng)下載一份Tomcat7源碼tomcat7
選擇Source Code Distributions下面的zip文件進行下載,下載好之后解壓,可以看到Tomcat項目是通過Ant進行構(gòu)建的,沒用過這個東西(傻眼),網(wǎng)上找了一下,發(fā)現(xiàn)也可以通過maven的方式來進行管理依賴關(guān)系。
新建一個Maven的配置文件pom.xml
<?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>org.apache.tomcat</groupId>
<artifactId>Tomcat7.0</artifactId>
<name>Tomcat7.0 src</name>
<version>7.0</version>
<build>
<finalName>Tomcat7.0</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.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-apache-log4j</artifactId>
<version>1.6.5</version>
</dependency>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-commons-logging</artifactId>
<version>1.6.5</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.xml/jaxrpc-api -->
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.4</version>
</dependency>
</dependencies>
</project>
網(wǎng)上那個教程不知道為什么我這邊直接就報錯,沒有找到對應(yīng)的jar包,自己去Maven找了一個,發(fā)現(xiàn)也是可以的。
Tomcat的啟動方法是在源碼下面的/java/org/apache/catalina/startup/Bootstrap.java類的main方法。
現(xiàn)在需要配置一個Application,點擊菜單欄Run-Edit configurations...,點擊加號新建配置項Application。
配置Main class為org.apache.catalina.startup.Bootstrap,網(wǎng)上有教程說需要配置VM options,不知道為什么我在我自己mac電腦上配置好之后沒有辦法正常使用,只有去掉才可以,還沒有搞清楚原因。
配置好了之后,我們先使用Maven的compile編譯下,看看有沒有問題,一切OK,正常編譯通過。
運行我們之前配好的Application。

訪問,http://localhost:8080/。熟悉的Tomcat界面表示環(huán)境搭建成功。底下就可以打斷電調(diào)試Tomcat7的源碼。