前言(也就是废话),十一放假,突然想研究一下tomcat源码,由于他的大名鼎鼎,想膜拜一下。
动手,网上搜集资料,自己实际运行。可是发现个问题,要么很多资料是全文字,要么是纯apache官方的翻译,令我这种长期做web的小鸟,感觉自己菜菜。无奈,自己摸索,5天下来,今天终于ok了。总结一下,分享心得,给同样在菜鸟线上挣扎的兄弟们,一些鼓舞,我们都是小菜鸟,我们同样也能飞。绝对菜鸟级文章,高手勿笑。
网上的不说了,自己搜索一下就好。
官方的说明地址:http://tomcat.apache.org/tomcat-6.0-doc/building.html
废话结束,正题。
资料下载:(我现在的时候是最新,或许兄弟们看时,已经不是最新了,见谅)
1.jdk:http://java.sun.com/javase/downloads/5u21/jdk(这个是jdk1.5,因为ant,和tomcat编译都需要1.5)
2.eclipse:http://download.actuatechina.com/eclipse/technology/epp/downloads/release/galileo/SR1/eclipse-jee-galileo-SR1-win32.zip
3.tomcat源码:http://apache.freelamp.com/tomcat/tomcat-6/v6.0.20/src/apache-tomcat-6.0.20-src.zip
4.ant:http://apache.etoak.com/ant/binaries/apache-ant-1.7.1-bin.zip(我们不会直接用它的,用eclipse来调它)
部署:安装解压等自己看着装。装完后,部署环境变量。
Java添加:
JAVA_HOME:E:/Program Files/Java/jdk1.5.0_21
Path:%JAVA_HOME%/bin;
Ant添加:
Path:E:/Program Files/apache-ant-1.7.1/bin
以上是我的目录,实际使用时,适当修改。
源码处理:
tomcat6.0源码解压:F:/work space/eclipse/Tomcat 6.0
去除一下只读属性。
用eclipse导入(选择Java Project from Existing Ant Buildfile),然后选择源码中的build.xml,即可成功导入。
把test也添加为Source Flder。
设置更改jre选中jre1.5
然后Add Library,选择Junit。(我选了Junit4)
去掉多余的引用,例如它自己导入的一个eclipse的jar引用,和tomcat的某些引用的(没有的话,最好),后面咱们自己添加。
消除红色xx:
需要不少jar文件,我都是从spring携带的lib中找的,偷懒了,给同样,不善于找的兄弟们提供一个捷径。
一下是spring中,最大的那个资源文件中找到的。其他相应的去各个官方找,也好。
不过用spring这个,省事嘿。
spring2.0.8:http://ncu.dl.sourceforge.net/project/springframework/springframework-2/2.0.8/spring-framework-2.0.8-with-dependencies.zip
据说里面的某个jar,必须用jdk1.5,也是前面需要jdk1.5的一个原因吧。
随便建个目录存放jar,我用的是ref。
/spring/lib/ant/ant.jar
/spring/lib/axis/axis.jar
/spring/lib/axis/wsdl4j.jar
/spring/lib/jakarta-commons/commons-collections.jar
/spring/lib/jakarta-commons/commons-dbcp.jar
/spring/lib/jakarta-commons/commons-logging.jar
/spring/lib/jakarta-commons/commons-pool.jar
/spring/lib/j2ee/jaxrpc.jar
以上都是网上的找的,只是最后一个是我自己添加的,因为没有它还会有好多红xx
还得需要去eclipse下找一个jar
/plugins/org.eclipse.jdt.core_3.5.0.v_963.jar(不同的clipse,版本号,会不同吧,我猜的)
把这些jar,引入。
红色xx应该没了,如果还有,看看是不是参照地方,重复了,改一改就好了。
好了,该做激动的事情了。
把目录中的build.properties.default,复制一份,命名为build.properties
并修改里面的一项base.path
我的更改如下,嘿嘿。
# ----- Default Base Path for Dependent Packages -----
# Please note this path must be absolute, not relative,
# as it is referenced with different working directory
# contexts by the various build scripts.
base.path=F:/work space/eclipse/BK/Tomcat 6.0/share
#base.path=/usr/share/java
#base.path=C:/path/to/the/repository
#base.path=/usr/local
我的源码目录是F:/work space/eclipse/BK/Tomcat 6.0各位看着设置自己的吧。
然后Window->Show View->Ant进入ant的窗口,咱们把代码中的build.xml拖过来,就好了。
对着窗口里面的download双击就好啦。
这样就把文件下载到share目录下了。听说不想下载的话,把咱们刚才引用的那些jar拷贝过来也成,还是下载吧,嘿嘿。src,以后慢慢读嘛。
总共8个文件夹,体积是大小:50.5 MB (53,054,100 字节)
然后再双击deploy[default],就是那个的。(貌似直接从它开始运行也可以,不过download占用时间最长吧,单独一下。)
BUILD SUCCESSFUL
Total time: 31 seconds
这样的信息,我喜欢。
运行啦。
环境变量添加,网上这么写的,抄的,为啥,不知道。
CATALINA_HOME:F:/work space/eclipse/Tomcat 6.0/output/build
就是你源目录下的output/build路径。
接下来,进入org.apache.catalina.startup包,对Bootstrap.java右键,选run configurations那个,进行run配置。
添加一个Java Application,进入Arguments选项卡。
Program arguments:start
VMarguments:"-Dcatalina.home=F:/work space/eclipse/Tomcat 6.0/output/build"
(我的具体位置)
好了,点击apply,关闭,然后对着Bootstrap运行吧,起来了,没有异常,爽啊。
总结,以上为菜鸟总结,望高手们能够挑出其中不合理不合适的地方,做修正,本着菜鸟能看懂,有没有什么缺陷的母的,发表此文。
欢迎转载和抄袭,同时也欢迎标注具体出处。版权没有,盗版自由。ok。