首先奉上tomcat源码下载地址: 点击下载源码

文章目录

  • 第一步:修改源码配置
    • 1.首先用idea打开下载好的源码项目。
    • 2.然后在该项目的根目录中创建一个pom.xml文件,用于引入依赖。
    • 3.紧接着,修改项目的启动配置
    • 4.找到这个class文件,增加一行代码,用于配置jsp
    • 5. 有个报错的测试代码,注释掉即可
    • 6. 找到tomcat的启动入口`Bootstrap.class`,运行main函数即可。
  • 其他
    • 1.为什么tomcat的入口是Bootstrap.class?

第一步:修改源码配置

1.首先用idea打开下载好的源码项目。

2.然后在该项目的根目录中创建一个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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.apache.tomcat</groupId><artifactId>Tomcat8.0</artifactId><name>Tomcat8.0</name><version>8.0</version><build><finalName>Tomcat8.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>

3.紧接着,修改项目的启动配置


配置内容如下

-D:\Development\IdeaGitResponse\Source\apache-tomcat-8.5.51-src/catalina-home/conf/logging/properties
-Dcatalina.home=D:\Development\IdeaGitResponse\Source\apache-tomcat-8.5.51-src
-Dcatalina.base=D:\Development\IdeaGitResponse\Source\apache-tomcat-8.5.51-src
-Djava.endorsed.dirs=D:\Development\IdeaGitResponse\Source\apache-tomcat-8.5.51-src/endorsed
-Djava.io.tmpdir=D:\Development\IdeaGitResponse\Source\apache-tomcat-8.5.51-src/temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=D:\Development\IdeaGitResponse\Source\apache-tomcat-8.5.51-src/conf/logging.properties
-Dfile.encoding=utf-8

4.找到这个class文件,增加一行代码,用于配置jsp

5. 有个报错的测试代码,注释掉即可

6. 找到tomcat的启动入口Bootstrap.class,运行main函数即可。


其他

1.为什么tomcat的入口是Bootstrap.class?

  1. 首先找到tomact的启动脚本startup.bat。可以看到里面设置的home变量在catalina.bat文件中,然后再打开catalina.bat
  2. 在该文件中,可以看到该项目设置的主函数为org.apache.catalina.startup.Bootstrap.class

欢迎关注本人个人公众号,交流更多技术信息

《WEB服务器——Tomcat》源码学习相关推荐

  1. Tomcat源码学习(一)

    Tomcat源码学习(一) 已有 9159 次阅读 2008-3-13 03:10 |个人分类:Tomcat|系统分类:开发 http://blog.ccidnet.com/home.php?mod= ...

  2. tomcat源码学习

    2019独角兽企业重金招聘Python工程师标准>>> 1.下载源码 在eclicpse 用svn导入源码   http://svn.apache.org/repos/asf/tom ...

  3. Tomcat源码学习(4)-How Tomcat works(转)

    ServerSocket类 Socket类代表一个客户端套接字,即任何时候你想连接到一个远程服务器应用的时候你构造的套接字,现在,假如你想实施一个服务器应用,例如一个HTTP服务器或者FTP服务器,你 ...

  4. 高并发 WEB 服务器 nginx 源码通读中文分析注释,带详细函数注释及函数调用注释,附 github 地址,后期持续维护更新...

    github地址:https://github.com/y123456yz/reading-code-of-nginx-1.9.2 对源码通读注释,函数进行了详细注释.同时对相关功能进行了优化,日志功 ...

  5. (精)tomcat 源码学习

    Tomcat6是最新版本的web容器,其支持最新版本的servlet2.5和jsp2.1.而且Tomcat6架构也是经过重新设计优化过的,所以我们有必要分析一下它的架构过程.显然,这是一个通过阅读To ...

  6. 【Tomcat源码学习】-2.容器管理

    Tomcat作为应用服务器,我们可以理解Tomcat本身就是一个容器,用于装载应用,而作为容器本身是由若干组件以及事件构成,容器管理即为管理容器的有机组成部分. 一.Tomcat整体结构: Serve ...

  7. Tomcat源码学习(9)-How Tomcat works(转)

    第2章:一个简单的Servlet容器 概要 本章通过两个程序来说明你如何开发自己的servlet容器.第一个程序被设计得足够简单使得你能理解一个servlet容器是如何工作的.然后它演变为第二个稍微复 ...

  8. Tomcat源码学习(7)-How Tomcat works(转)

    Response类 ex01.pyrmont.Response类代表一个HTTP响应,在Listing 1.6里边给出.          Listing 1.6: Response类 package ...

  9. 2021-03-19Tomcat源码学习--WebAppClassLoader类加载机制

    Tomcat源码学习--WebAppClassLoader类加载机制 在WebappClassLoaderBase中重写了ClassLoader的loadClass方法,在这个实现方法中我们可以一窥t ...

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

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

最新文章

  1. usaco street race(dfs)
  2. android sdk 环境签名,gradle打包APK,并使用jarsigner签名
  3. CJOI 05新年好 (最短路+枚举)
  4. java 监听udp_Java实现Udp网络编程
  5. GPFS实施方案的思考
  6. 微信小程序 转发 分享功能
  7. Xcode打包证书,ipa安装启动闪退的相关问题
  8. 工业电脑量产测试之----U盘DOS 启动盘制作(1)
  9. x86 实模式与保护模式
  10. 怎么让excel中一部分表格显示但是打印时不打印?
  11. C语言编程>第二十二周 ② 请补充fun函数,该函数的功能是:返回字符数组中指定字符的个数,指定字符从键盘输入。
  12. 移动端键盘弹出后,导致背景图片上移解决方法(MUI)
  13. 【Linux 内核 内存管理】分区伙伴分配器 ② ( free_area 空闲区域结构体源码 | 分配标志位 | GFP_ZONE_TABLE 标志位区域类型映射表 |分配标志位对应的内存区域类型 )
  14. TCP/IP协议详解篇一(基础)
  15. 盛世昊通国际控股成功登陆美国纳斯达克,迈入国际舞台
  16. Android实现文字垂直滚动
  17. matlab求复数相位角,怎么求复数相位
  18. 用Python进行批量文件整理
  19. wps怎么保存网页上的内容通过在线素材一键实现
  20. 核磁共振T1弛豫时间 纵向弛豫过程及纵向弛豫意义

热门文章

  1. moment getTime
  2. matlab处理数学物理方法,MATLB在《数学物理方法》中的应用.doc
  3. 教你低价配置千兆个人云盘
  4. 愤怒的小鸟:燃烧你的玩乐激情
  5. 多接口PD快充协议方案
  6. 企业选择OA系统的好处有哪些?该如何选择?
  7. HTML5+CSS笔记教程(CSS教程篇)
  8. 计算机学院团委会通讯录,计算机学院团委新一届成员登场
  9. 案例 | 光大银行如何解决传统监控痛点,打造一体化监控平台?
  10. 鲜有人知道却好用到爆的1款便签APP推荐