前言

最近在分析tomcat的启动流程,虽然我们可以在idea中查看到tomcat的源代码,但是我们不能在上面做一些代码注释,这就会 非常的不方便,所以我们还是能在本地 运行一份源码,这样非常有利于我们分析源码

一、下载tomcat源码,选择tomcat-8.5.55版本

进入tomcat官网,点击左侧菜单栏Download对应的版本,下载源码

二、idea中创建项目

1.在idea中创建一个空白项目,名称为tomcat_study

2.打开项目源目录,将tomcat的源码解压到其中

3.创建文件夹

在tomcat的源码文件夹下面创建home目录,把源码中的conf目录和webapps目录剪切到其中(其他新建的目录如logs等),另外新建maven的pom.xml文件。

4、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.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启动配置

5.1 构建项目

完成上面的操作以后,我们在idea中重新打开项目,直接选中我们增加的pom.xml文件,将所以的包下载完成以后,构建项目结构。

5.2 设置Run/Debug configurations

其中

Main class:
org.apache.catalina.startup.BootstrapVM options 按照自己的路径进行修改:
-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 设置ContextConfig类

然后打开ContextConfig(org.apache.catalina.startup 下面) 类,加上一行代码:context.addServletContainerInitializer(new JasperInitializer(),null);

5.4 启动tomcat

即可debug查看tomcat的初始化和启动过程以及其他源码执行,入口类就是Bootstrap类的main方法。


总结

通过上面过程,我们就可以 将tomcat源码通过maven方式在本地运行起来,小编已经成功运行起来,并且对tomcat中 调用servlet初始化的流程进行了注释,下面是小编的tomcat源码地址,

https://github.com/good-jack/tomcat_source/tree/master

后续对于tomcat源码的学习,都是在这个项目中进行记录

将tomcat源码以maven方式运行相关推荐

  1. 使用Maven编译Tomcat源码

    使用Maven编译Tomcat源码 准备工作 编译工具:Intellij Idea 15.0.2 Tomcat版本:7.0.69 下载链接 JDK版本:1.7.0_80 Maven版本:3.05 编译 ...

  2. tomcat源码运行

    tomcat各版本下载地址: https://archive.apache.org/dist/tomcat/ 下载8.0.11的tomcat src包并解压,一开始的我参照的tomcat源码里BUIL ...

  3. tomcat依赖导入步骤_图说tomcat(三)导入tomcat源码到idea

    前面两篇文章中我们提到了寻找tomcat的main函数,还有tomcat的启动加载过程,第一个还好,基本上都是通过.sh文件来看的,但第二个如果直接通过文本打开java文件就有点痛苦了,可能小伙伴看的 ...

  4. Tomcat源码分析--转

    一.架构 下面谈谈我对Tomcat架构的理解 总体架构: 1.面向组件架构 2.基于JMX 3.事件侦听 1)面向组件架构 tomcat代码看似很庞大,但从结构上看却很清晰和简单,它主要由一堆组件组成 ...

  5. Tomcat - 源码构建Tomcat 8.5.55 启动

    文章目录 官方地址 源码搭建分析 源码搭建步骤 (Maven管理) Step1. 新增maven管理文件 pom.xml Step2. 处理conf 和 webapps Step3. 导入IEDA 3 ...

  6. java tomcat源码_详解Tomcat系列(一)-从源码分析Tomcat的启动

    在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来. 由于篇幅的原因, 很难把Tomcat所有的知 ...

  7. Tomcat源码调试环境搭建

    我们一般都是为了解决某个问题,才去看源码的.Java体系就是这点好处,源码唾手可得.遇到问题,最后的解决方法总是可以从源码中找到. 参考了网上的文章,过程整理如下: 1. 下载和导入 官网下载编译好的 ...

  8. Tomcat源码解析系列二:Tomcat总体架构

    Tomcat即是一个HTTP服务器,也是一个servlet容器,主要目的就是包装servlet,并对请求响应相应的servlet,纯servlet的web应用似乎很好理解Tomcat是如何装载serv ...

  9. Tomcat源码解析一:下载源码与导入eclipse

    自从写web程序以来,web程序是如何在Tomcat中运行的一直困惑着我,不知道底层的运行机制是无法真正理解web的,所以就开始研究Tomcat源码,Tomcat是一个轻量级的java服务器,再结合& ...

最新文章

  1. jsp开发,拼接项目前缀
  2. js实现撤销恢复_我们常用的撤销和恢复功能,它们使用了什么设计模式实现吗?...
  3. 燃!Java全球标准中国人参与制定,阿里成首个受邀中国公司
  4. 高级运维工程师证书_高级装配式工程师证书有什么用?
  5. android开发需要root吗,已经2017年了,Android手机还需要root吗?
  6. 通过MVC模式将Web视图和逻辑代码分离
  7. jdk8 lambda
  8. [转载]厚积博发,有的放矢
  9. java抽象类详细介绍
  10. 2020年度十大高薪岗位出炉!程序员霸榜!
  11. Matplotlib——线图_axis()函数
  12. 金融市场一周简报(2017-08-18)
  13. 洛谷P1007独木桥
  14. 董事长和总经理的最大区别
  15. 基于 Qt5 ( C++ ) 开发的一个小巧精美的本地音乐播放器
  16. Lucene 7.5.0 索引文件之liv
  17. Linux项目:音乐播放器
  18. 计算机应用基础专业宣传手册,用微课学·计算机应用基础简介,目录书摘
  19. 17.2.3 通过查看triggers数据表中的数据查看触发器的信息
  20. flutter 微信聊天输入框

热门文章

  1. linux网络流量控制,linux 下网络流量监控
  2. 四川已公开5G专利1966件,位列全国第六
  3. 如何实现模拟量信号远距离无线传输?
  4. Hive - 警惕默认分割符号:^A
  5. BUAA OO Unit1 单元总结
  6. 工作中应该如何管理自己的情绪?
  7. 打印A4纸图片需要多少像素和分辨率
  8. 高并发和海量数据下的 9 个 Redis 经典案例剖析!
  9. 红黑树插入操作的初步理解
  10. 基于STC89C51单片机设计的心形流水灯软件代码部分