Tomcat源码学习 —— Chapter-1 导入Tomcat 9

版权声明: https://blog.csdn.net/qq_36786991/article/details/85182897

Chapter-1 导入Tomcat 9

1. 下载源码

​ 官网下载Tomcat9的源码

2. 导入IDEA

进入源码目录 移动文件夹webapps和conf文件夹到同一目录的catalina-home(手动创建)文件夹里,并在这个文件夹里再建

lib

logs

work

temp

四个文件.

├── lib
├── logs
├── temp
├── webapps
└── work

然后在根目录创建文件pom.xml(为了使用maven构建工具),内容如下

<?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>Tomcat9.0</artifactId>
    <name>Tomcat9.0</name>
    <version>9.0</version>
 
    <build>
        <finalName>Tomcat9.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.3</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>

接下来就是导入IDEA

3. 初始化&运行

导入成功后,配置运行方式

在这里插入图片描述

在这里插入图片描述

vm options 内容:

-Dcatalina.home=catalina-home -Dcatalina.base=catalina-home -Djava.endorsed.dirs=catalina-home/endorsed -Djava.io.tmpdir=catalina-home/temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=catalina-home/conf/logging.properties

然后运行

注意:编译时出错报错的代码,直接注释即可;

预计错误:

  1. 因为Tomcat代码会有个jdk判断,那里会有if-else判断,注释else内容即可

  2. 测试代码错误,只有一个文件里有,注释方法里的代码即可

  3. 运行后,访问localhost:8080为500错误,原因是我们直接启动org.apache.catalina.startup.Bootstrap的时候没有加载org.apache.jasper.servlet.JasperInitializer,从而无法编译JSP。解决办法是在tomcat的源码org.apache.catalina.startup.ContextConfig中手动将JSP解析器初始化:

    context.addServletContainerInitializer(new JasperInitializer(), null);
    

    img

参考博客:https://blog.csdn.net/yekong1225/article/details/81000446

猜你喜欢

转载自blog.csdn.net/qq_36786991/article/details/85182897