• 欢迎访问 winrains 的个人网站!
  • 本网站主要从互联网整理和收集了与Java、网络安全、Linux等技术相关的文章,供学习和研究使用。如有侵权,请留言告知,谢谢!

Tomcat 7 源代码运行环境搭建

Tomcat winrains 来源:预流 1年前 (2019-10-29) 62次浏览
《Tomcat 7 源码分析》系列文章是我 2013 年到 2015 年间写在 ITeye 上的相关博客汇总,从后台的访客记录看一直到现在还有很多人在读,也是访问量最多的系列,本来计划要写 8 点:
1. 容器启动,从server到listener、jndi、service到connetor、engine到host到context到wrapper一系列对象的组装,包括Digester的使用、JMX注册、JDK5中的新的线程池启动方式等。
2. 一个socket连接如何转化成request的。
3. 一条请求响应链在容器中流转的经过。
4. 容器的自定义classloader机制。
5. session如何实现,特别是集群环境中的session粘滞和session复制的实现。
6. nio处理方式的实现。
7. servlet3新规范中websocket的实现。
8. 容器的关闭机制。
结果只写了 1、2、3、8 ,后面有空将再把这个系列写完。我最近也把博客的首发地改到了掘金,为了保持这个系列的完整性,先把以前写过的转过来吧。
——————————————————————–
以前看过 Tomcat 5 的一部分源代码,当时只看了个大概的启动分析,后来看了《How Tomcat Works》这本书,讲的还行。但出版的较早,所以是基于 Tomcat 4 的代码分析,Tomcat 已经 release 到 7 (2013年的时候)了,很多后来添加的特性与新的实现方式那本书里面没有涉及。下半年业余时间的主要任务就是完成 Tomcat 7 各个我感兴趣的点的系列文章。
先说下我的源码分析的环境搭建吧,用的是 eclipse Juno Service Release 1,然后在 tomcat官网下了 tomcat7.0.42的源码 ,这两样准备好之后便是搭建能够运行源码的调试环境了。
1. 在 eclipse 中新建一个 java 项目,项目取名 tc7.0.42

JRE 选择 1.6 的

其他设置默认

2. 将下载的 tomcat 源码包解压开,并拷贝到 Eclipse 里新建的项目根目录下

注意,我这里将源码解压开后的 bin 目录重命名成 script 之后才拷贝的,因为新建的 Java 项目中默认编译后的文件存放目录是 bin ,这样做防止编译后的文件覆盖原来拷贝过去的内容。


3. 将项目中默认的 src 目录删掉,java 和 test 作为源目录


4. 此时会发现项目中缺少一些类,需要手动将依赖的 jar 包添加进来,所以新建了一个 depend-lib 目录

5. 实际上缺少的这些 jar 包 eclipse 安装目录里面都有,直接拷贝过来就可以了。
在 eclipse 安装目录的 plugins 目录下,搜索 “ant.jar”

搜索 “javax.wsdl” ,选版本较高的那个 jar 包

搜索 “jaxrpc”

搜索 “jdt.core” 选最大的那个 jar 包

6. 把这些 jar 包加入到编译路径里

7. 此时发现 test 目录下还有错误,实际上是因为 test 里面用到了 junit 的一些注解,所以需要将 junit4 引进来
右击项目,点击 Build Path ,选择 Add Libraries

选择 junit

下一步,junit 版本选择 JUnit 4

自此整个项目应该可以编译了。
8. 接下来运行项目根目录下的 build.xml ,执行默认的 ant 任务,看看项目构建的有没有问题。


控制台输出 “BUILD SUCCESSFUL” 表示编译构建成功。

9. 此时刷新整个项目,会发现多出一个 output 目录

10. 为了让应用跑起来,可以检查一下 output\build\conf 下是否已经有配置文件,这些文件实际是从项目根路径 conf 目录下拷贝过来的。
11. 找到 BootStarp.java 文件,Debug 前加入默认的 catalina home 路径作为启动参数。
BootStarp.java 文件右键选择 Debug As -> Debug Configurations

路径设置为 output 下 build 的绝对路径。比如我自己的机器设置的值是 -Dcatalina.home=”E:\workspace\study\tc7.0.42\output\build”

这样就可以在文件中加入断点 Debug 源码分析了。

作者:预流

来源:https://juejin.im/post/5a6c3a28518825732739d7cd


版权声明:文末如注明作者和来源,则表示本文系转载,版权为原作者所有 | 本文如有侵权,请及时联系,承诺在收到消息后第一时间删除 | 如转载本文,请注明原文链接。
喜欢 (1)