设为首页 收藏本站
查看: 782|回复: 0

[经验分享] tomcat源码阅读(一)——环境搭建

[复制链接]

尚未签到

发表于 2017-1-27 06:53:22 | 显示全部楼层 |阅读模式
一、工具准备

需要SVN、Maven、JDK、Eclipse、M2Eclipse

二、下载源码及发布包

源码在:
http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_27/

发布包在:
http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.27/bin/

说明:下载发布包这个步骤是可选的,好处是免得从源码再自行构建,节省时间;另外发布包里的配置文件等,接下来可以直接拿来用,很方便

三、整理目录

前面下载得到了源码和发布包,现在要把它们放到同一个目录里,再整理一下,方便后面把它转化成eclipse工程,毕竟后续读源码,以及调试,都要在eclipse里完成

新建一个单独的目录,叫tomcat7.0.27,然后把刚才下载的源码和发布包都放进去。源码目录重命名为code;发布包重命名为launch

得到的目录结构见下图:

DSC0000.jpg

一会就会把这个目录导入eclipse,变成可运行,可调试的eclipse工程

四、转换成maven工程

将附件中的pom.xml放入目录,与code、launch目录平行

得到的目录结构见下图:

DSC0001.jpg

说明:这也不是必须的,只是为了方便

五、导入eclipse

DSC0002.png

DSC0003.png

导入成功以后,eclipse里的工程目录结构如下图:

DSC0004.png

接下来就可以在eclipse里运行和调试tomcat了,也可以随意修改源代码,或者自己添加测试用例

六、启动tomcat

tomcat启动入口类是:org.apache.catalina.startup.Bootstrap

平时我们用发布包启动tomcat一般是用脚本startup.bat或者startup.sh,其实就是在脚本中先处理启动参数和系统变量,然后调用这个入口类的main()方法

所以在eclipse里启动,我们也是直接执行这个类的main()方法,只是模拟脚本,设置一下启动参数和系统变量

方法1:

在VM arguments中,拷贝以下参数

-Dcatalina.home=launch -Dcatalina.base=launch -Djava.endorsed.dirs=launch/endorsed -Djava.io.tmpdir=launch/temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=launch/conf/logging.properties

如图:

DSC0005.png

方法2:

将附件中的启动脚本,拷贝到工程目录下,结构如下图:

DSC0006.png

然后直接在start-tomcat7.launch上右键点击,run就可以

启动效果如下图:

DSC0007.png

眼熟,和普通的脚本启动,以及启动嵌入式tomcat的信息都是一样的

最后用浏览器访问:http://localhost:8080/examples/

七、tomcat7核心架构

DSC0008.png

包名作用
javax.*各种JSR的API,如jsp、servlet、el等
org.apache.catalinatomcat自身架构
org.apache.coyotehttp、ajp协议实现
org.apache.elEL规范实现
org.apache.jasperJSP规范实现
org.apche.juli日志
org.apache.namingJNDI实现
org.apache.tomcat工具包、XML解析器等

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-333833-1-1.html 上篇帖子: 分析 Tomcat startup.bat 启动脚本 [转] 下篇帖子: Tomcat日志处理(包括catalina.out切分)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表