上一篇文章的產(chǎn)出,其實(shí)離不開網(wǎng)上各位大神們的輔助,正是通過(guò)他們的講解,我才對(duì)Tomcat的結(jié)構(gòu)有了更進(jìn)一步的認(rèn)識(shí)。
但在描述前后端交互的過(guò)程中,還有很多細(xì)節(jié)并沒(méi)有描述到位,所以就有了研究Tomcat源碼的想法。
而在配置Tomcat源碼工程的過(guò)程中,摸摸爬爬兩個(gè)多小時(shí),總算是成功啟動(dòng)了。
故撰寫此篇博文,授之以漁。
準(zhǔn)備工作
1.apache-tomcat-8.5.32-src源碼包,官網(wǎng)下載并解壓即可;
2.apache-ant-1.10.5(用的最新版)下載并安裝:Tomcat源碼默認(rèn)采用的是ant編譯;安裝好以后配置環(huán)境變量
配置好環(huán)境變量后在dos下運(yùn)行 ant -version 查看是否能成功使用
項(xiàng)目創(chuàng)建過(guò)程
1、pom.xml文件配置
由于需要將項(xiàng)目導(dǎo)入idea中,故需要在源碼包的根目錄下( 即apache-tomcat-8.5.32-src下 )創(chuàng)建如下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>Tomcat8.0</artifactId>
<name>Tomcat8.0</name>
<version>8.0</version>
<build>
<finalName>Tomcat8.0</finalName>
<sourceDirectory>java</sourceDirectory>
<!--<testSourceDirectory>test</testSourceDirectory>-->
<resources>
<resource>
<directory>java</directory>
</resource>
</resources>
<!--<testResources>-->
<!--<testResource>-->
<!--<directory>test</directory>-->
<!--</testResource>-->
<!--</testResources>-->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.5.1</version>
</dependency>
</dependencies>
</project>
2、運(yùn)行ant命令獲取catalina-home的文件夾配置
為了得到catalina-home下的各類文件夾,從而成功使用Tomcat,需要利用ant命令來(lái)獲取源碼包對(duì)應(yīng)的文件夾
1)在源碼包文件夾同級(jí)下創(chuàng)建catalina-home文件夾;
2)進(jìn)入win+R->cmd命令行內(nèi),cd進(jìn)入源碼包根目錄下: 即apache-tomcat-8.5.32-src下
3)運(yùn)行ant;
運(yùn)行結(jié)束之后,會(huì)在源碼包根目錄下的 output/build 中生成catalina-home所需的文件夾;將這些復(fù)制到源碼包同級(jí)的catalina-home中。
IDEA導(dǎo)入項(xiàng)目及配置
1、導(dǎo)入項(xiàng)目
啟動(dòng)idea,進(jìn)行import project導(dǎo)入項(xiàng)目, 導(dǎo)入時(shí)選擇項(xiàng)目時(shí)選擇源碼包的目錄 , 即apache-tomcat-8.5.32-src ,一路默認(rèn)選擇即可。
2、配置
成功導(dǎo)入項(xiàng)目之后,必須得進(jìn)行一系列配置才能成功啟動(dòng)項(xiàng)目。
1)點(diǎn)擊菜單欄的 Run ,在下拉框中選擇 Edit Configurations 。
2)在打開的彈框中進(jìn)行如下配置:
a. 點(diǎn)左上方綠色加號(hào),選擇Apllication。
b.名字隨意。在MainClass處,輸入: org.apache.catalina.startup.Bootstrap
c.VM options:填入剛剛創(chuàng)建的catalina-home文件夾路徑,如我的是:
-Dcatalina.home="D:\Tomcat-Study\catalina-home"
d.Use classpath of module和pom文件中設(shè)置的Tomcat版本一直,不一致會(huì)無(wú)法成功創(chuàng)建application, 一般會(huì)自動(dòng)對(duì)應(yīng)pom.xml文件中設(shè)置的;
e.確認(rèn)好jre,點(diǎn)擊apply,配置就算完成了。
啟動(dòng)項(xiàng)目
配置好了以后就可以啟動(dòng)項(xiàng)目了??梢哉业?java/org.apache.catalina.startup.Bootstrap.java文件,在main函數(shù)中注入一行如下輸出語(yǔ)句以便觀察。
public static void main(String args[]) {
System.out.println("項(xiàng)目開始啟動(dòng)===============================");
if (daemon == null) {
// Don't set daemon until init() has completed
Bootstrap bootstrap = new Bootstrap();
try {
........
啟動(dòng)項(xiàng)目。控制臺(tái)顯示如下:
最終出現(xiàn)如下信息且無(wú)報(bào)錯(cuò),則表示項(xiàng)目啟動(dòng)成功。
此時(shí)便可在browser上進(jìn)行訪問(wèn)了,輸入localhost:8080,出現(xiàn)Tomcat啟動(dòng)后的經(jīng)典畫面。
接下來(lái)你就可以進(jìn)行Tomcat源碼的調(diào)試及開發(fā)了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。