如何將tomcat源碼以maven方式運(yùn)行
前言
最近在分析tomcat的啟動(dòng)流程,雖然我們可以在idea中查看到tomcat的源代碼,但是我們不能在上面做一些代碼注釋?zhuān)@就會(huì) 非常的不方便,所以我們還是能在本地 運(yùn)行一份源碼,這樣非常有利于我們分析源碼
一、下載tomcat源碼,選擇tomcat-8.5.55版本
進(jìn)入tomcat官網(wǎng),點(diǎn)擊左側(cè)菜單欄Download對(duì)應(yīng)的版本,下載源碼
二、idea中創(chuàng)建項(xiàng)目
1.在idea中創(chuàng)建一個(gè)空白項(xiàng)目,名稱(chēng)為tomcat_study
2.打開(kāi)項(xiàng)目源目錄,將tomcat的源碼解壓到其中
3.創(chuàng)建文件夾
在tomcat的源碼文件夾下面創(chuàng)建home目錄,把源碼中的conf目錄和webapps目錄剪切到其中(其他新建的目錄如logs等),另外新建maven的pom.xml文件。
4、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>org.apache.tomcat</groupId> <artifactId>Tomcat8.5.55</artifactId> <name>Tomcat8.5.55</name> <version>8.5.55</version> <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>org.apache.ant</groupId> <artifactId>ant</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.5.1</version> </dependency> </dependencies> <build> <finalName>Tomcat8.5.55</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>3.1</version> <configuration> <encoding>UTF-8</encoding> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
5、tomcat啟動(dòng)配置
5.1 構(gòu)建項(xiàng)目
完成上面的操作以后,我們?cè)趇dea中重新打開(kāi)項(xiàng)目,直接選中我們?cè)黾拥膒om.xml文件,將所以的包下載完成以后,構(gòu)建項(xiàng)目結(jié)構(gòu)。
5.2 設(shè)置Run/Debug configurations
其中
Main class: org.apache.catalina.startup.Bootstrap VM options 按照自己的路徑進(jìn)行修改: -Dcatalina.home=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home -Dcatalina.base=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home -Djava.endorsed.dirs=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home/endorsed -Djava.io.tmpdir=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home/temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home/conf/logging.properties
5.3 設(shè)置ContextConfig類(lèi)
然后打開(kāi)ContextConfig(org.apache.catalina.startup 下面) 類(lèi),加上一行代碼:context.addServletContainerInitializer(new JasperInitializer(),null);
5.4 啟動(dòng)tomcat
即可debug查看tomcat的初始化和啟動(dòng)過(guò)程以及其他源碼執(zhí)行,入口類(lèi)就是Bootstrap類(lèi)的main方法。
總結(jié)
通過(guò)上面過(guò)程,我們就可以 將tomcat源碼通過(guò)maven方式在本地運(yùn)行起來(lái),小編已經(jīng)成功運(yùn)行起來(lái),并且對(duì)tomcat中 調(diào)用servlet初始化的流程進(jìn)行了注釋
到此這篇關(guān)于如何將tomcat源碼以maven方式運(yùn)行的文章就介紹到這了,更多相關(guān)tomcat源碼以maven方式運(yùn)行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Tomcat8使用cronolog來(lái)進(jìn)行Catalina.Out日志分割方法
今天通過(guò)本文給大家分享如何使用cronolog來(lái)分割catalina.out日志文件,對(duì)Tomcat Catalina.Out日志分割方法感興趣的朋友跟隨小編一起看看吧2021-09-09Tomcat和Weblogic部署純html文件過(guò)程解析
這篇文章主要介紹了Tomcat和Weblogic部署純html文件過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09Windwos下實(shí)現(xiàn)Nginx+Tomcat集群過(guò)程解析
這篇文章主要介紹了Windwos下實(shí)現(xiàn)Nginx+Tomcat集群過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Tomcat部署項(xiàng)目的幾種常見(jiàn)方式[親測(cè)]
這篇文章主要介紹了Tomcat部署項(xiàng)目的幾種常見(jiàn)方式,文中給大家提到了三種方法,除此之外還有Tomcat熱部署的方式 ,感興趣的朋友跟隨小編一起看看吧2018-11-11記一次tomcat進(jìn)程cpu占用過(guò)高的問(wèn)題排查記錄
這篇文章主要介紹了記一次tomcat進(jìn)程cpu占用過(guò)高的問(wèn)題排查記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02tomcat正常啟動(dòng)但網(wǎng)頁(yè)卻無(wú)法訪問(wèn)的幾種解決方法
本文主要介紹了tomcat正常啟動(dòng)但網(wǎng)頁(yè)卻無(wú)法訪問(wèn)的幾種解決方法,根據(jù)自身使用情況和一些網(wǎng)上搜索到的結(jié)果,匯總整理一下,具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05Tomcat使用線程池處理遠(yuǎn)程并發(fā)請(qǐng)求的方法
這篇文章主要介紹了Tomcat使用線程池處理遠(yuǎn)程并發(fā)請(qǐng)求的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12Eclipse/tomcat 如何實(shí)現(xiàn)熱部署和熱啟動(dòng)
這篇文章主要介紹了Eclipse/ tomcat 如何實(shí)現(xiàn)熱部署和熱啟動(dòng),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09