1.下載到原始碼後,tomcat預設使用ant作為包管理工具,本地偵錯時建立pom.xml, 手動建立一個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>2.0.2</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>5.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.unboundid</groupId>
<artifactId>unboundid-ldapsdk</artifactId>
<version>6.0.4</version>
<scope>test</scope>
</dependency>
<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>
<dependency>
<groupId>javax.xml.rpc</groupId>
<artifactId>javax.xml.rpc-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.6.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
2.使用idea匯入tomcat原始碼 File->Project from Existing Sources -> Maven import
重新匯入依賴後TestCookieFilter會報錯,本地註釋掉單元測試類即可。
3.編輯組態檔, Edit Configuration, 如下圖。
設定catalina.home和tomcat啟動類Bootstrap, jdk我選擇的是1.8
4.Maven Reload, 把依賴的包重新匯入進來。
1.Servlet.service() for servlet [jsp] in context with path [] threw exception [org.apache.jasper.JasperException: Unable to compile class for JSP] with root cause
解決方案:編輯 org.apache.catalina.startup.ContextConfig 檔案的 configureStart() 方法,新增初始化 JSP 解析器的程式碼:
在ContextConfig類的configStart方法中加入以下程式碼
context.addServletContainerInitializer(new JasperInitializer(), null);
我本地下載的tomcat8原始碼, 以上工作準備完後,直接編譯,單元測試也沒報錯。執行起來,就可以看到貓咪了, 可以開心的看原始碼了。
我原生的原始碼config/server.xml裡設定的是8080埠, 這裡就跑起來了。
開始閱讀tomcat原始碼之前,先瀏覽一遍tomcat官方寫的介紹,裡面內容很全,也是我們學習的第一手資料,這裡涉及到兩個變數CATALINA_HOME和CATALINA_BASE。
預設情況下,CATALINA_HOME和CATALINA_BASE指向同一目錄。當您需要在一臺計算機上執行多個 Tomcat 範例時,手動設定CATALINA_BASE。這樣做具有以下優點:
部落格地址: | http://www.cnblogs.com/sword-successful/ |
部落格版權: | 本文以學習、研究和分享為主,歡迎轉載,但必須在文章頁面明顯位置給出原文連線。 如果文中有不妥或者錯誤的地方還望高手的你指出,以免誤人子弟。如果覺得本文對你有所幫助不如【推薦】一下!如果你有更好的建議,不如留言一起討論,共同進步! 再次感謝您耐心的讀完本篇文章。 |