1、首先在自己项目中被tomcat回调的接口实现类中,标记一个断点信息,如图所示,通过idea启动web项目,当出现如图所示的断点信息的时候,因为断点位置标记的是tomcat回调的接口类,所以遽牟赓雁按照调用堆栈网上则是tomcat内部代码,但此时双击org.apache.catalina包下面的类名,是没有任何反应的,因为我们还没有将tomcat对应的依赖文件添加到classpath下面
2、打开百度搜索,输入tomcat maven,然后查找到maven仓库
3、搜索tomcat关键字,找到Tomcat catalina,然后选择和自己使用的tomcat版本一致依赖jar信息
4、如图所示,在pom.xml中添加<挢旗扦渌;dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-catalina</artifactId> <version>8.5.3</version> <scope>provided</scope></dependency>因为运行时使用的是tomcat的lib目录下面的jar文件,所以此处的scope使用provided方式
5、配置完成之后,刷新maven,等tomcat相应的依赖文件自动下载完成之后,再次debug断点,这次可以顺利的进入tomcat包内部的代码了,但进入的class文件,不是源码文件,断点跟踪一定要是源码文件,要不然行数对应不上,无法正确调试的,点击Down Sources通过maven自动下载源码即可
6、等待源码下载完成之后,再次进入debug断点,这次显示的是java后缀的源码了,源码一般都有详细的注释,class文件是没有的
7、最后在tomcat源码文件中添加断点标记,或者直接跟踪到tomcat源码包中,就可以单步断点跟踪tomcat内部的源码了,通过这样的方式可以更加详细的了解tomcat内部实现逻辑,有兴趣的可以好好研究学习了