将tomcat源码以maven方式运行
前言
最近在分析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方式运行相关推荐
- 使用Maven编译Tomcat源码
使用Maven编译Tomcat源码 准备工作 编译工具:Intellij Idea 15.0.2 Tomcat版本:7.0.69 下载链接 JDK版本:1.7.0_80 Maven版本:3.05 编译 ...
- tomcat源码运行
tomcat各版本下载地址: https://archive.apache.org/dist/tomcat/ 下载8.0.11的tomcat src包并解压,一开始的我参照的tomcat源码里BUIL ...
- tomcat依赖导入步骤_图说tomcat(三)导入tomcat源码到idea
前面两篇文章中我们提到了寻找tomcat的main函数,还有tomcat的启动加载过程,第一个还好,基本上都是通过.sh文件来看的,但第二个如果直接通过文本打开java文件就有点痛苦了,可能小伙伴看的 ...
- Tomcat源码分析--转
一.架构 下面谈谈我对Tomcat架构的理解 总体架构: 1.面向组件架构 2.基于JMX 3.事件侦听 1)面向组件架构 tomcat代码看似很庞大,但从结构上看却很清晰和简单,它主要由一堆组件组成 ...
- Tomcat - 源码构建Tomcat 8.5.55 启动
文章目录 官方地址 源码搭建分析 源码搭建步骤 (Maven管理) Step1. 新增maven管理文件 pom.xml Step2. 处理conf 和 webapps Step3. 导入IEDA 3 ...
- java tomcat源码_详解Tomcat系列(一)-从源码分析Tomcat的启动
在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来. 由于篇幅的原因, 很难把Tomcat所有的知 ...
- Tomcat源码调试环境搭建
我们一般都是为了解决某个问题,才去看源码的.Java体系就是这点好处,源码唾手可得.遇到问题,最后的解决方法总是可以从源码中找到. 参考了网上的文章,过程整理如下: 1. 下载和导入 官网下载编译好的 ...
- Tomcat源码解析系列二:Tomcat总体架构
Tomcat即是一个HTTP服务器,也是一个servlet容器,主要目的就是包装servlet,并对请求响应相应的servlet,纯servlet的web应用似乎很好理解Tomcat是如何装载serv ...
- Tomcat源码解析一:下载源码与导入eclipse
自从写web程序以来,web程序是如何在Tomcat中运行的一直困惑着我,不知道底层的运行机制是无法真正理解web的,所以就开始研究Tomcat源码,Tomcat是一个轻量级的java服务器,再结合& ...
最新文章
- jsp开发,拼接项目前缀
- js实现撤销恢复_我们常用的撤销和恢复功能,它们使用了什么设计模式实现吗?...
- 燃!Java全球标准中国人参与制定,阿里成首个受邀中国公司
- 高级运维工程师证书_高级装配式工程师证书有什么用?
- android开发需要root吗,已经2017年了,Android手机还需要root吗?
- 通过MVC模式将Web视图和逻辑代码分离
- jdk8 lambda
- [转载]厚积博发,有的放矢
- java抽象类详细介绍
- 2020年度十大高薪岗位出炉!程序员霸榜!
- Matplotlib——线图_axis()函数
- 金融市场一周简报(2017-08-18)
- 洛谷P1007独木桥
- 董事长和总经理的最大区别
- 基于 Qt5 ( C++ ) 开发的一个小巧精美的本地音乐播放器
- Lucene 7.5.0 索引文件之liv
- Linux项目:音乐播放器
- 计算机应用基础专业宣传手册,用微课学·计算机应用基础简介,目录书摘
- 17.2.3 通过查看triggers数据表中的数据查看触发器的信息
- flutter 微信聊天输入框