Idea 调试Tomcat源码
开篇
不知道从哪个途径被安利买了一本《Tomcat架构解析》的书,突然对Tomcat来了兴趣,准备花一段时间好好研究这个对自己来说是黑盒的容器,所以在未来一段时间里朋友圈应该会有大量这方面的分享。
按照固有套路,阅读源码前得搭建基于idea集成开发环境的debug环境,这篇文章主要就是做这个事情的,当然必然是参考了前人的文章,在文末的参考文章中已经注明,以示尊重。
源码下载
我是基于TOMCAT_8_5_34版本,所以source和binary的下载都是基于该版本。
需要注意的是在tomcat binary下载中需要选择core版本
额外需要执行下面的配置
- 目录结构
tomcat_study
├── TOMCAT_8_5_34 (tomcat源码)
└── apache-tomcat-8.5.34 (tomcat的core文件)
- 新增pom.xml
在TOMCAT_8_5_34的目录下新增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.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>
Idea配置
Idea的配置按照下面的步骤进行操作:
- 1、按照下面图示新增Application的配置信息
- 2、在Man class:中填入:
org.apache.catalina.startup.Bootstrap
- 3、在VM options:中填入:
-Dcatalina.home="apache-tomcat-8.5.34"
,catalina.home替换成tomcat binary core的目录 - 4、jdk默认是1.8,因为我装的就是jdk1.8版本
- 5、启动过程中Test模块会报错,且为TestCookieFilter.java,注释里面的测试内容即可
启动验证
浏览器中输入127.0.0.1:8080,得到下面的页面界面说明启动成功。
参考文章

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
数据库相关岗位面试准备建议
标签 PostgreSQL , 数据库 , 面试准备 背景 本文同时适合用人方、闯关应聘方。 注意通过面试问题,发掘小伙伴的极限。找准小伙伴层级定位。 类目 至少应该包含如下,每一项应该包含范围,考察目的,评判标准,不同等级的差异化,对应的深度、广度。 外围能力考察 操作系统 比如 为什么有杀不掉的进程,什么原因? 进程的几种状态? D状态是什么原因造成的?Z状态是什么原因造成的? 如果进程HANG住,如何排查? pstack , gdb 增加数据库并发,数据库性能并没有线性提升,通常可能的原因有哪些?如何排查? strace, ptrace, perf, oprofile cgroup 可以做哪些隔离, Linux下面有哪些虚拟技术,他们的差异。 进程、线程间通信技术 进程、线程、协程。 存储 比如 传统文件系统 卷管理 INODE 分布式文件系统 DIO与BUFFERIO 如
-
下一篇
探索解析微服务下的RabbitMQ
概览 本文主要介绍如何使用RabbitMQ消息代理来实现分布式系统之间的通信,从而促进微服务的松耦合。 RabbitMQ,也被称为开源消息代理,它支持多种消息协议,并且可以部署在分布式系统上。它轻量级,便于部署应用程序。它主要充当一个队列,其中输入的消息可以首先被操作。RabbitMQ可以在许多操作系统和云环境中运行,并为大多数流行语言提供了广泛的开发工具。它是生产者-消费者模式,生产者发出信息,消费者消费信息。RabbitMQ的主要特点如下: 异步消息 分布式部署 管理和监控 企业和云计算 安装 对于RabbitMQ,首先需要在系统中安装ErLang,因为RabbitMQ是用ErLang语言编写的。安装Erlang之后,你可以通过下面的介绍从它的官网下载最新版本的RabbitMQ。 在微服务中使用RabbitMQ 在您的微服务体系结构中,RabbitMQ是实现消息队列的最简单的免费的可用选项之一。这些队列模式有助于解耦各个微服务之间的通信来增加应用程序的弹性。我们可以将这些队列用于各种目的,比如核心微服务之间的交互、微服务的解耦、实现故障转移机制,以及通过消息代理发送电子邮件通知。 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 2048小游戏-低调大师作品
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL数据库在高并发下的优化方案
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker快速安装Oracle11G,搭建oracle11g学习环境