Tomcat 源码启动

3 篇文章 0 订阅
1 篇文章 0 订阅
文章介绍了如何下载Tomcat源码,通过IDEA将其转换为Maven项目,配置pom.xml文件添加依赖,然后设置启动参数以运行Tomcat。在启动时需特别注意添加特定的初始化代码以避免欢迎页面出错。最后,成功启动后可以在本地访问Tomcat的默认端口8080进行验证。
摘要由CSDN通过智能技术生成

要想学习 Tomcat 原理,看源码是最直接的方式,而想要理解源码,我们要想把它在本地跑起来。

下载源码

到 Tomcat 的官网 http://tomcat.apache.org 上下载 Tomcat 的源码
在这里插入图片描述

下载下来是一个压缩包文件
在这里插入图片描述

解压之后目录结构如下
在这里插入图片描述

用IDEA打开

在根目录用 IDEA 打开,Tomcat 是用 Ant 构建的,所以我们要把它改成 Maven 项目。用 Idea 打开之后如下,在根目录下创建 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</groupId>
  <artifactId>tomcat</artifactId>
  <name>apache-tomcat-8.5.57</name>
  <version>8.5.57</version>

  <build>
    <finalName>Tomcat-8.5.57</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.5.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>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.10.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.6.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.glassfish/javax.xml.rpc -->
    <dependency>
      <groupId>org.glassfish</groupId>
      <artifactId>javax.xml.rpc</artifactId>
      <version>3.0.1-b03</version>
    </dependency>

    <dependency>
      <groupId>com.unboundid</groupId>
      <artifactId>unboundid-ldapsdk</artifactId>
      <version>6.0.3</version>
    </dependency>

  </dependencies>
</project>

标记项目的源码目录和测试源码目录

在这里插入图片描述

这是项目就已经被我们改造成 Maven 项目了,点击刷新图标就会下载所有的依赖项

在这里插入图片描述

配置并启动

idea项目的启动配置

在这里插入图片描述

  • Tomcat 的启动类是:org.apache.catalina.startup.Bootstrap

  • 配置虚拟机参数:

    -Dcatalina.home=D:\下载\apache-tomcat-8.5.84-src\apache-tomcat-8.5.84-src
    -Dcatalina.base=D:\下载\apache-tomcat-8.5.84-src\apache-tomcat-8.5.84-src
    -Djava.endorsed.dirs=D:\下载\apache-tomcat-8.5.84-src\apache-tomcat-8.5.84-src\endorsed
    -Djava.io.tmpdir=D:\下载\apache-tomcat-8.5.84-src\apache-tomcat-8.5.84-src\temp
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
    -Djava.util.logging.config.file=D:\下载\apache-tomcat-8.5.84-src\apache-tomcat-8.5.84-src\conf\logging.properties
    -Duser.language=en
    -Duser.region=US
    

    注意,里面的目录是你解压缩 Tomcat 源码包的目录,如果你的目录不一样需求修改。

  • org.apache.catalina.startup.ContextConfig.java 中的 webConfig(); 后面加上一段代码 context.addServletContainerInitializer(new JasperInitializer(),null);,它的作用是加载 org.apache.jasper.servlet.JasperInitializer,如果不加这段代码,Tomcat 的欢迎页面会报错。

然后就可以启动 Tomcat 了,Tomcat 的默认端口号是 8080。启动后输出日志如下:
在这里插入图片描述

启动成功后在本地使用浏览器访问 http://localhost:8080 访问 Tomcat
在这里插入图片描述

参考:
https://juejin.cn/post/6872515297618706446
https://www.cnblogs.com/wk-missQ1/p/13138720.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值