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

[经验分享] Tomcat7调试运行环境搭建与源代码分析入门

[复制链接]

尚未签到

发表于 2018-12-7 07:14:22 | 显示全部楼层 |阅读模式
1.需要准备好下面这些工具
  JDK1.6+
  Maven2或3
  TortoiseSVN1.7+(从1.7开始”.svn”目录集中放在一处了,不再每个目录下都放一份)
  Eclipse3.5+
  这4个工具不在这里描述怎么配置了,如果你是有两三年开发经验的Java开发人员,正常来讲都一直在用了。
  另外,分析tomcat源代码不需要对这4个工具做什么特殊配置。
2.下载Tomcat的源代码
  Apache旗下的开源项目基本上都放在这:http://svn.apache.org/repos/asf
  里面包含了tomcat、struts、hadoop、hbase等流行的开源项目的源代码,
  可以直接用浏览器打开这个URL,或者用TortoiseSVN的RepositoryBrowser打开它。
  tomcat的svn是:http://svn.apache.org/repos/asf/tomcat,
  目前tomcat有4个大分支:
  5.5:http://svn.apache.org/repos/asf/tomcat/tc5.5.x
  6.0:http://svn.apache.org/repos/asf/tomcat/tc6.0.x
  7.0:http://svn.apache.org/repos/asf/tomcat/tc7.0.x
  8.0:http://svn.apache.org/repos/asf/tomcat/trunk
  5.5分支会在今年9月30号后停止维护,所以除非有历史遗留系统,不推荐再去读它的代码,
  6.0分支是比较成熟的,在生产环境用得比较多,
  目前官方对这个分支进入维护、bugfix阶段,很少有新功能添加进来了,
  我个人也不推荐读它的代码,代码相对7.0来讲比较脏乱。
  7.0分支完整实现了servlet3.0规范,已陆续发布了27个小版本,己经稳定了,可用于生产环境,
  代码比5.5、6.0分支干净整洁得多,这也是我强烈向你推荐的版本。
  8.0分支主要关注websocket和spdy,正处于活跃开发阶段,代码变动比较频繁,保持关注即可。
  所以这篇文章讲的是7.0分支,研究tomcat推荐直接提取svn的源代码:
  用TortoiseSVNcheckout这个svn的代码:http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk
  放到D:Tomcat7trunk(你可以换别的目录)
  然后再从这下载一个二进制分发包(BinaryDistributions)
  http://labs.mop.com/apache-mirror/tomcat/tomcat-7/v7.0.27/bin/apache-tomcat-7.0.27.zip
  解压后放到D:Tomcat7,顺便把”apache-tomcat-7.0.27″重命名成launch吧,
  用这个二进制分发包而不是从源代码构建只是为了节省时间,
  直接用它conf目录里面的配置文件和webapps下的例子。
3.把它变成maven工程
  主要是添加几个依赖(ecj、ant、jaxrpc等),否则的话导入eclipse后会有编译错误,
  另外,因为tomcat不是标准的maven工程项目,比如没有srcmainjava这样的目录,
  所以要调整一下sourceDirectory和testSourceDirectory,下面是一个完整的pom文件,
  直接放到D:Tomcat7目录即可(pom.xml与之前的launch、trunk目录并列)
  (注:pom.xml文件在附件中)
Xml代

4.0.0
org.apache.tomcat
Tomcat7.0
Tomcat7.0
7.0

Tomcat7.0
trunk/java
trunk/test


trunk/java




trunk/test




org.apache.maven.plugins
maven-compiler-plugin
2.3

1.6
1.6






junit
junit
4.4
test


org.eclipse.jdt.core.compiler
ecj
3.7.2


ant
ant
1.7.0


wsdl4j
wsdl4j
1.6.2


javax.xml
jaxrpc
1.1





4.导入Eclipse
  在命令行窗口中进入D:Tomcat7目录,执行mvneclipse:eclipse就可以转成eclipse工程项目了,
  然后打开eclipse,点”File->Import->General->ExistingProjectsintoWorkspace”,
  最后打开D:Tomcat7就能看到Tomcat7.0这个项目了。
  (如果eclipse装了m2e插件不用执行mvneclipse:eclipse的,可以直接导入maven工程)
5.在Eclipse中让Tomcat跑起来
  在Eclipse中打开org.apache.catalina.startup.Bootstrap类,
  在编辑区右击,点”RunAs->Runconfigurations”,然后双击”JavaAplication”就会出来一个新的”Bootstrap”,
  选中它,在右边点击”Arguments”那一栏,把下面的内容copy到”VMarguments”中:
  -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
  然后点run按钮,就可以启动tomcat了,启动成功会在Eclipse的console中显示:
Java代码


2012-6-10 14:25:31 org.apache.catalina.startup.Catalina start
信息: Server startup in 359 ms  除上面这种方式外,这里还有一个Eclipse的launch脚本(start-tomcat7.launch(注:在附件中))
Xml代码














  可以放到D:Tomcat7目录,然后flush一下Eclipse,在Eclipse中右击这个文件,点RunAs启动Tomcat,点DebugAs可以调试Tomcat。
  最后,打开你的浏览器,输入http://127.0.0.1:8080/examples/看看例子吧。
6.简单的源代码阅读指南:
Java代码


包名                    用途
=================================================
javax                 servlet/jsp/el相关的api
org.apache.catalina   tomcat自身架构
org.apache.coyote     http、ajp协议实现相关的类
org.apache.el         实现el规范
org.apache.jasper     实现jsp规范、编译jsp文件
org.apache.juli       tomcat的日志系统
org.apache.naming     jndi实现
org.apache.tomcat     tomcat的工具包、net、digester xml解析器  阅读顺序:
  可以从org.apache.catalina.startup.Bootstrap这个类开始看起,
  然后到org.apache.catalina.startup.Catalina,
  在Catalina类中会触发conf/server.xml文件的解析,
  这时要看org.apache.tomcat.util.digester中的类,
  解析的过程中会用到org.apache.catalina.startup包中的很多RuleSet类,
  server.xml文件解析完后,会生成org.apache.catalina.core包中的各种StandardXXX类的实例,
  比如StandardServer、StandardService、StandardEngine等等,
  这些Standard组件都是有生命周期的,接着会调用他们的init、start等方法,
  会触发下面这些组件进入init、start状态
  org.apache.catalina.connector.Connector
  org.apache.coyote.http11.Http11Protocol
  org.apache.tomcat.util.net.JIoEndpoint
  在JIoEndpoint(或NioEndpoint、AprEndpoint)中会监听8080这样的端口,
  有请求进来了,就进行相关的io操作,接着转到org.apache.coyote包中的相应类进行协议解析,
  生成org.apache.catalina.connector.Request和org.apache.catalina.connector.Response实例,
  然后转到各种Valve、应用Filter,最后到达应用的Servlet/JSP。




运维网声明 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-644111-1-1.html 上篇帖子: tomcat端口被占用了怎么办 下篇帖子: linux下安装配置JDK+Tomcat+Mysql测试环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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