天天看點

Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)

Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)

官方位址

https://tomcat.apache.org/download-80.cgi

Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)

曆史版本:

https://archive.apache.org/dist/tomcat/tomcat-8/

這裡最新的是 8.5.55 ,我們就用這個吧

Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)

得到 apache-tomcat-8.5.55-src.zip

源碼搭建分析

我們在使用tomcat時,倆目錄 conf 和 webapps 是不是經常需要修改?

Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)

一個負責tomcat的配置檔案資訊,一個負責應用 。 很顯然,我們使用源碼建構tomcat環境的時候,也要告訴tomcat這兩個目錄的位置,以便加載配置檔案和應用。

不管形式怎麼變, 使用tomcat編譯好的二進制還是源碼部署編譯,tomcat該加載的配置檔案都是一樣的。

是以 ,使用源碼編譯需要做出點改變, 比如下面搭建步驟中建立source檔案夾目錄,存放conf和webapps(實際上,這個目錄名字愛叫啥,愛放哪 放哪, 我們隻要通過VM options 告訴tomcat就好了,為了友善管理,是以在源碼的一級目錄下建個目錄source)

源碼搭建步驟 (Maven管理)

Step1. 新增maven管理檔案 pom.xml

解壓apache-tomcat-8.5.55-src.zip 後 ,比如我這裡放到了D盤 , 在 D:\apache-tomcat-8.5.55-src 下 建立pom.xml

<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.0modelVersion>
    <groupId>org.apache.tomcatgroupId>
    <artifactId>apache-tomcat-8.5.50-srcartifactId>
    <name>Tomcat8.5name>
    <version>8.5version>
 
    <build>
      	
        <finalName>Tomcat8.5finalName>
        <sourceDirectory>javasourceDirectory>
        <resources>
            <resource>
                <directory>javadirectory>
            resource>
        resources>
        <plugins>
          	
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>3.1version>
                <configuration>
                    <encoding>UTF-8encoding>
                    <source>8source>
                    <target>8target>
                configuration>
            plugin>
        plugins>
    build>

    
    <dependencies>
        
        <dependency>
            <groupId>javax.xmlgroupId>
            <artifactId>jaxrpcartifactId>
            <version>1.1version>
        dependency>
        
        <dependency>
            <groupId>javax.xml.soapgroupId>
            <artifactId>javax.xml.soap-apiartifactId>
            <version>1.4.0version>
        dependency>
        
        <dependency>
            <groupId>wsdl4jgroupId>
            <artifactId>wsdl4jartifactId>
            <version>1.6.2version>
        dependency>
        
        <dependency>
            <groupId>org.eclipse.jdt.core.compilergroupId>
            <artifactId>ecjartifactId>
            <version>4.5.1version>
        dependency>
        
        <dependency>
            <groupId>antgroupId>
            <artifactId>antartifactId>
            <version>1.7.0version>
        dependency>
        
        <dependency>
            <groupId>org.easymockgroupId>
            <artifactId>easymockartifactId>
            <version>3.4version>
        dependency>
    dependencies>
project>           

複制

Step2. 處理conf 和 webapps

在 D:\apache-tomcat-8.5.55-src 下建立個source目錄 ,原因如上分析

在apache-tomcat-8.5.55-src下建立source檔案夾 ,将conf、webapps目錄移動到 source檔案夾中

Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)

這裡多了其他的,是因為我剛才已經啟動tomcat了…

Step3. 導入IEDA

3.1 配置Main Class

新增Application , 選擇Main class , 配置VM 參數

Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)
Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)

3.2 配置VM 參數

VM參數 ,告訴tomcat 家目錄一級 log日志檔案目錄。 【tomcat源碼運作需要加載配置檔案】

-Dcatalina.home=D:\apache-tomcat-8.5.55-src\source
-Dcatalina.base=D:\apache-tomcat-8.5.55-src\source
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=D:\apache-tomcat-8.5.55-src\source\conf\logging.properties           

複制

完整的資訊如下:

Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)

Step4. 啟動tomcat

Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)

通路 http://locahost:8080/

Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)

原因: Jsp引擎Jasper沒有被初始化,進而無法編譯處理Jsp,Jsp是需要被轉換成servlet進一步編譯處理的,隻需要在tomcat的源碼ContextConfig類中的configureStart方法中增加一行代碼将Jsp引擎初始化

// 初始化Jasper  (JSP解析引擎)
  context.addServletContainerInitializer(new JasperInitializer(),null);           

複制

Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)

重新開機再次通路 http://locahost:8080/

Tomcat - 源碼建構Tomcat 8.5.55 啟動官方位址源碼搭建分析源碼搭建步驟 (Maven管理)