编译Tomcat7

参考:[url]http://tomcat.apache.org/tomcat-7.0-doc/building.html[/url]

[b]1.下载并安装JDK6[/b]
下载地址:[url]http://www.oracle.com/technetwork/java/javase/downloads/index.html[/url]
安装配置:
双击即可一步一步地安装。
安装完成后,接下来是,配置环境变量JAVA_HOME为JDK6的安装目录:例如[b][color=red]D:\dev\Java\jdk1.6.0_45[/color][/b],然后在PATH环境变量的最前面添加以下内容:[b][color=red]%JAVA_HOME%\bin;[/color][/b]

Ctrl+R-->cmd-->java -version,如果出现了Java的版本信息,说明安装配置成功。


[b]2.安装Ant 1.8.1(或最新版本)[/b]
下载地址:[url]http://ant.apache.org/bindownload.cgi[/url]
下载最新版Ant 1.9.1的zip版:[b]apache-ant-1.9.1-bin.zip[/b]
将其解压到一个目录下(如:D:\dev下),将解压出来的文件夹重命名为ant。
接着设置ANT_HOME环境变量为[b][color=red]D:\dev\ant[/color][/b],然后在PATH环境变量最前面添加以下内容:[b][color=red]%ANT_HOME%\bin;[/color][/b]

Ctrl+R-->cmd-->ant -version,如果出现了Ant的版本信息,说明安装配置成功。

Ant实际上将被用于执行编译。


[b]3.获得Tomcat7的源码[/b]
Tomcat 7.0 SVN repository URL: [url]http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk/[/url],可以使用SVN检出。
Tomcat source packages: [url]http://tomcat.apache.org/download-70.cgi.[/url],可直接下载zip版本或者tar.gz版本的源码。
本文下载是windows版的源码即zip版的源码:[b]apache-tomcat-7.0.40-src.zip[/b]。
然后将其解压到一个目录下(D:\dev\eclipse\workspace),将解压出来的文件夹重命名为tomcat(即源码所在目录:D:\dev\eclipse\workspace\tomcat)。


[b]4.编译Tomcat[/b]
(1)进入tomcat源码的目录(D:\dev\eclipse\workspace\tomcat),将其中的build.properties.default文件重命名未build.properties,并修改base.path为:
[b][color=darkred]base.path=D:/dev/eclipse/workspace/tomcat/repository[/color][/b]

(2)编译:
${tomcat.source}表示tomcat源码所在目录。
[b]
cd ${tomcat.source}
ant
[/b]

[b]
cd D:\dev\eclipse\workspace\tomcat
ant
[/b]

运行这条命令将要下载编译Tomcat所需要的库文件到[b]base.path[/b]指定的目录中。

[b]一旦编译成功,一个[color=red]可用的Tomcat[/color]将会被产生在[color=red]${tomcat.source}/output/build[/color]目录中,且能够被脚本启动和关闭。[/b]


[b]5.使用Eclipse编译[/b]
(1)Ant的目标是提供一中便捷:下载所有二进制依赖关系,和在源代码树的根目录下创建Eclipse项目及classpath文件。
[b]
cd ${tomcat.source}
ant ide-eclipse
[/b]
即:
[b]
cd D:\dev\eclipse\workspace\tomcat
ant ide-eclipse
[/b]

(2)启动Eclipse,打开Preferences对话框,选择Java->Build Path->Classpath Variables,增加两个Classpath Variables:
(a)[b]TOMCAT_LIBS_BASE[/b]:D:/dev/eclipse/workspace/tomcat/repository(路径和在build.properties中的base.path设置一样,即存放的是已经下载的二进制依赖)
(b)[b]ANT_HOME[/b]:D:\dev\ant(Ant的根目录)

配置JRE:
打开Preferences对话框,
选择Java->Installed JREs->Add。选择JRE Home:D:\dev\Java\jdk1.6.0_45\jre;
选择Java -> Compiler,设置Compiler compliance level 等于当前JDK的版本(1.6),默认一般是最新版本。

单击OK,设置完成。


(3)导入Tomcat源码到Eclipse中:
File->Import->Existing Projects into Workspace->选择Tomcat源码的根目录,单击完成即可导入。

(4)在Eclipse中找到org.apache.catalina.startup.Bootstrap,使用它作为主类,选中右击“Run As->Run configurations”,然后双击”Java Aplication”就会出来一个新的”Bootstrap”:
进行如下设置:
[b]
Name:Bootstrap start

Project:tomcat
Main class(Search而来):org.apache.catalina.startup.Bootstrap

Program arguments:start
VM arguments:-Dcatalina.home="D:\dev\eclipse\workspace\tomcat\output\build"
[/b]

单击Apply,即可保存设置
接着单击Run,Tomcat即可启动。

打开浏览器,输入[url]http://127.0.0.1:8080/examples/[/url]看看例子。

(5)与(4)同样的方法设置Bootstrap stop,不同之处在于[b]Program arguments:stop[/b]

(6)调试Tomcat源码的方法:选中org.apache.catalina.startup.Bootstrap,单击右键Debug As->Debug configurations


6.[b][color=darkred]简单的源代码阅读指南[/color][/b]

包名 用途
=================================================
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。

下图描述了Tomcat7的核心架构:

[img]http://dl2.iteye.com/upload/attachment/0085/6015/a16ea23e-bdf4-3b21-83d6-cb7896c10881.png[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值