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

[经验分享] 从源码安装tomcat 6.0.18

[复制链接]

尚未签到

发表于 2017-1-25 07:59:57 | 显示全部楼层 |阅读模式
从源码安装tomcat 6.0.18
注意事项:
JDK用1.6
1      安装Subversion
下载地址:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
当然,如果您想从Eclipse中直接导入Tomcat源代码,请从http://subclipse.tigris.org/update_1.0.x下载Subversion插件,即可导入Tomcat源代码。
安装完成后,请在MS-DOS窗口中键入svn export help,验证是否安装成功
2       下载Tomcat6.0的源代码
Tomcat源代码的版本控制工具不是CVS,而是Subversion,
在MS-DOS下键入:
svn export  http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/TOMCAT_6_0_18/  G:\tomcat_6.0.18\src
这个命令的意思是把Tomcat6.0.18的源代码从Subversion库中导入到本机的G:\tomcat_6.0.18\src目录,
下面是源代码的目录结构,从这个目录结构中,我们可以看出该项目的开发者使用的IDE是Eclipse,因为我们看到了熟悉的.project及.classpath文件。
 
bin
脚本文件
conf
xml和properties配置文件
java
Java源码文件
res
资源文件比如说图片文件,ini文件及其它的一些静态资源文件
test
测试源代码
 
 
3       安装Ant
请从http://ant.apache.org/bindownload.cgi处下载并安装
4      下载依赖项目
 
Tomcat以Ant作为编译工具
修改build.properties
找到Tomcat的源代码中的build.properties.default文件,将该文件复制到build.properties,
然后打开build.properties,找到下面这行:
base.path=/usr/share/java
将它改为:
base.path= G:/tomcat_6.0.18/src/share
 
在Tomcat编译过程中,Ant会让我们下载一些必要的依赖项目,base.path目录就是用来保存这些项目文件的,我们可以将这个属性指向一个已经存在的目录。
修改完base.path后,我们回到MS-DOS窗口,切换到Tomcat源代码所在目录,然后运行ant download命令
cd G:\tomcat_6.0.18\src
c:\apache-ant-1.7.1\bin\antdownload
 
一分钟未到,Ant就告诉我们一个错误并提示我们编译失败,就是找不到http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/R-3.2-200606291905/eclipse-JDT-3.2.zip文件。

Tomcat的编译和Eclipse的JDT有什么关系?是因为Tomcat是在Eclipse下开发的,
所以需要EclipseJDTJavaDevelopment tooling)插件来编译Tomat源代码。既然找不到,我们只好自己动手,上Google一搜,马上发现这个文件的有效下载地址为:http://mirror.calvin.edu/eclipse/downloads/drops/R-3.2-200606291905/eclipse-JDT-3.2.zip。我们打开刚才的build.properties文件,将其34行修改为:


jdt.loc= http://mirror.calvin.edu/eclipse/downloads/drops/R-3.2-200606291905/eclipse-JDT-3.2.zip
Tomcat 6.0.0需要改这个,Tomcat 6.0.18不需要改这个选项了
修改保存build.properties文件后,重新开始ant download任务。
这次我们等的时间较长,因为eclipse-JDT-3.2.zip大约有19M,下载需要一段时间。
编译成功,虽然编译器给出几个警告。
……
BUILD SUCCESSFUL
Total time: 15 minutes 17 seconds
 
这时我们可发现刚才创建的base.path目录(G:\tomcat_6.0.18\src\share)中已经下载了6个依赖项目,它们都是Tomcat编译所必须的。


l 配置代理
修改build.properties文件:添加如下内容
proxy.host=192.168.0.1
proxy.port=808
proxy.use=on
 
5  编译
请在MS-DOS窗口内键入ant并回车,
c:\apache-ant-1.7.1\bin\ant
 
Ant将在2分钟内编译1000多个源文件并将Tomcat部署到output目录。
编译顺利完成后,请打开Tomcat的源代码目录,会发现多了一个output目录,这是Ant的编译后的输出目录。
……
BUILD SUCCESSFUL
Total time: 1 minute 31 seconds
 
6  运行tomcat
请打开Tomcat源代码的output\build\bin子目录,双击startup.bat文件,我们即可成功启动Tomcat6.0,此时我们的编译工作就算顺利完成了。
http://127.0.0.1:8080/
 
7      导入源代码到Eclipse
7.1   新建一个Java项目
请打开Eclipse,新建一个Java项目,请选择Create project from existing source, 并在Directory文本框内填入我们刚才下载的Tomcat源代码目录(i.e. G:\tomcat_6.0.18\src),然后点击Next直至结束。
7.2 指定库文件
我们将会看到Eclipse拒绝编译,这是因为Eclipse找不到该项目指定的库文件。请右击该项目,在弹出菜单中选择Properties=>Libraries,然后删除两个以TOMCAT_LIBS开头的两个库文件,只保留一个JRE库文件,然后点击OK按钮,这时Eclipse开始编译Tomcat源代码,但是发现一堆错误,这是因为我们没有为该项目添加编译所必须的Jar包。
 
准备好Tomcat项目所必须的jar文件,其实,刚才我们运行ant download任务时,已经下载过这些jar文件包。
ant.jar
(请在ant安装目录的lib子目录中拷贝)
commons-collections-3.2.jar
(从刚才Ant下载的share\commons-collections-3.2-src子目录中拷贝)
commons-dbcp-1.2.2.jar
(从刚才Ant下载的share\commons-dbcp-1.2.2-src子目录中拷贝)
commons-logging-1.1.jar
(如果您本机没有这个jar包,请从http://commons.apache.org/downloads/download_logging.cgi处下载)

commons-pool-1.2.jar
(如果在刚才下载的share\commons-pool-1.4-src的目录中找不到,可以执行这个命令来得到jar文件c:\apache-ant-1.7.1\bin\antbuild-jar)
org.eclipse.jdt.core_3.3.1.v_780_R33x.jar
(从刚才Ant下载的share\eclipse\plugins子目录中拷贝)
jaxrpc.jar
wsdl4j-1.5.1.jar
到http://ws.apache.org/axis/下载。
 
 
当我们准备好这些jar文件后,将这些文件拷贝到某一目录(比如说G:\tomcat_6.0.18\tomcat_lib目录),
 
 
然后在Eclipse中新建一个User Libraries,我们将这个新建的User Libraries命名为TOMCAT_LIBS,并把这些文件加到TOMCAT_LIBS。然后将我们新建的TOMCAT_LIBS添加到Tomcat6项目。另外,别忘了把JUnit库也加到Tomcat6项目。这时Eclipse开始重新编译,编译过程顺利通过,所有错误均消失,此时Tomcat6项目的目录结构如下:
 
7.3   把test目录也加入到源代码中
方法是在Eclipse中右击”test”目录,然后在弹出菜单中选择“Build path”=>”Use as Source Folder”,之后我们会看到test目录上就多了个源代码的符号。
 
8      在Eclipse中运行Tomcat。
请找到Tomcat的启动主类org.apache.catalina.startup.Bootstrap,右击这个类,在弹出菜单中选择“Run As…”=>”Open Run Dialog…”,然后在弹出的“Run”窗口中填入程序运行参数“start”和JVM运行参数catalina.home,
 
程序运行参数:       start
JVM运行参数:      -Dcatalina.home="G:\tomcat_6.0.18\src"
 
然后点击“Run”按钮,我们将会看到Tomcat正常启动。恭喜,咱们的Tomcat源码已经成功导入Eclipse,这时,
 
9      调试Tomcat,
请打开org.apache.jasper.compiler.Compiler类的源代码,在generateJava()方法的第一行打一个断点,然后在Eclipse的调试状态下运行Tomcat,等Tomcat运行后,打开我们的浏览器,在地址栏中输入http://localhost:8080/examples/jsp/jsp2/el/basic-comparisons.jsp并回车,然后我们可观察到Eclipse此时切换至调试视图:

上面的小实验表明我们可以在Eclipse中通过Debugger观察Tomcat的内部运行机理。另外补充一点,上面的generateJava方法是将jsp动态编译至java class,这个方法只是在第一次请求或者Jsp源码发生变化时执行,如果您再次在浏览器中发送同样的请求,您将看不到上图的Debug界面,因为该方法不再执行。



 

10            其他
JDK版本引起的问题报如下错误:

 

    [javac] C:\tomcat_6.0.18\src\share\tomcat6-deps\dbcp\src\java\org\apache\tom

cat\dbcp\dbcp\datasources\PerUserPoolDataSource.java:52:org.apache.tomcat.dbcp.

dbcp.datasources.PerUserPoolDataSource不是抽象的,并且未覆盖 java.sql.Wrapper

中的抽象方法isWrapperFor(java.lang.Class<?>)

这是JDK版本1.6造成的。需要安装JDK版本1.5.

安装1.5之后,原来的1.6不必卸载,

为了把两个版本的JDK区别开,可以键入如下命令

set path=C:\Program Files\Java\jdk1.5.0_06\bin

set JAVA_HOME=C:\ProgramFiles\Java\jdk1.5.0_06

 

还有一点很有意思。

Tomcat6以前版本的源代码分散在好几个子项目中,他们分别叫做jakarta-servletapi-5,jakarta-tomcat-5,jakarta-tomcat-catalina,jakarta-tomcat-connectors和jakarta-tomcat-jasper,我觉得Tomcat的开发者可能嫌这样做太麻烦了,所以Tomcat6版本中将这些子项目都合并在一起了。但是,这种做法不利于我们阅读理解源代码。

文章出处:http://www.diybl.com/course/4_webprogram/jsp/jsp_js/2008313/104405_5.html
 

运维网声明 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-333028-1-1.html 上篇帖子: Apache+tomcat实现高可用WEB集群 下篇帖子: JMX在Tomcat中的应用(三)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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