- 浏览: 100976 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
kingcs:
IndexSearcher 没有关闭。 searcher.cl ...
lucene第一步---6.分页 -
xyheritrix:
看了后我没一点点刺激,你的3个例子对我根本说明不了问题,在我看 ...
从优秀迈向卓越 -- 我的设计模式学习感悟 -
zl0828:
这个小知识值得分享,我支持lz分享
jquery ui 1.7版中的datepicker大小問題
咱们分析的是 tomcat 6
1. 下载Tomcat6.0的源代码
首先用 svn export 出源代码, 官网下的源码包我不知道有没有 build.xml , 读者可以验证一下, 我映像中是没有的。
exoprt 之前你可以在浏览器直接输入 http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/ , 然后选择要export 出来的版本。
svn export http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/TOMCAT_6_0_0/ D:\carl_wu\tomcat\src\
2. 编译并运行
代码下载后,我们接下来就是要编译并运行Tomcat。一提编译,我们不禁会想到可爱的Ant。不错,Tomcat正是以Ant作为编译工具,如果您还没有安装,请从http://ant.apache.org/bindownload.cgi 处下载并安装它。然后,请从Tomcat的源代码文件找到build.properties.default文件,并将该文件复制到build.properties,然后打开build.properties,找到下面这行:
base.path=/usr/share/java
将它改为:
base.path= D:/carl_wu/tomcat/share
在Tomcat编译过程中,Ant会让我们下载一些必要的依赖项目,base.path目录就是用来保存这些项目文件的,我们可以将这个属性指向一个已经存在的目录。修改完base.path后,我们回到MS-DOS或Shell窗口,切换到Tomcat源代码所在目录,然后运行ant download命令,如下图所示:
download 一般最新的版本是没有问题的,如果是老版本的话,如果有链接失效了需要在 build.properties文件 改链接。
下完了后,下面就开始真正的编译任务了,请在MS-DOS或Shell窗口内键入ant并回车,Ant将在2分钟内编译1000多个源文件并将Tomcat部署到output目录。编译顺利完成后,请打开Tomcat的源代码目录,会发现多了一个output目录,这是Ant的编译后的输出目录。请打开Tomcat源代码的output\build\bin子目录,双击startup.bat文件,我们即可成功启动Tomcat6.0,此时我们的编译工作就算顺利完成了。
3. 导入源代码到Eclipse
3.1 请打开Eclipse,新建一个Java项目,然后点击“Next”按钮,请选择“Create project from existing source”, 并在Directory文本框内填入我们刚才下载的Tomcat源代码目录(i.e. D:\carl_wu\tomcat\src),然后点击“Next”直至结束。
3.2 我们将会看到Eclipse拒绝编译,这是因为Eclipse找不到该项目指定的库文件。请右击该项目,在弹出菜单中选择“Properties”=>“Libraries”,然后删除两个以TOMCAT_LIBS开头的两个库文件,只保留一个JRE库文件,然后点击“OK”按钮,这时Eclipse开始编译Tomcat源代码,但是发现一堆错误,这是因为我们没有为该项目添加编译所必须的Jar包。
3.3 准备好Tomcat项目所必须的jar文件,其实,刚才我们运行ant download任务时,已经下载过这些jar文件包。
ant.jar (请在ant安装目录的lib子目录中拷贝)
commons-collections-3.1.jar (从刚才Ant下载的commons-collections-3.1子目录中拷贝)
commons-dbcp-1.2.1.jar(从刚才Ant下载的commons-dbcp-1.2.1子目录中拷贝)
commons-logging-1.1.jar(如果您本机没有这个jar包,请从http://commons.apache.org/downloads/download_logging.cgi处下载)
commons-pool-1.2.jar(从刚才Ant下载的commons-pool-1.2子目录中拷贝)
org.eclipse.jdt.core_3.2.0.v_671.jar(从刚才Ant下载的eclipse\plugins子目录中拷贝)
3.4 当我们准备好这些jar文件后,将这些文件拷贝到某一目录(比如说D:\carl_wu\tomcat\tomcat_lib目录),然后在Eclipse中新建一个User Libraries,我们将这个新建的User Libraries命名为TOMCAT_LIBS,并把这些文件加到TOMCAT_LIBS。然后将我们新建的TOMCAT_LIBS添加到Tomcat6项目。另外,别忘了把JUnit库也加到Tomcat6项目。这时Eclipse开始重新编译,编译过程顺利通过,所有错误均消失,此时Tomcat6项目的目录结构如下:
还有,请把test目录也加入到源代码中,方法是在Eclipse中右击”test”目录,然后在弹出菜单中选择“Build path”=>”Use as Source Folder”,之后我们会看到test目录上就多了个源代码的符号,如上图所示。
3.5在Eclipse中运行Tomcat。请找到Tomcat的启动主类org.apache.catalina.startup.Bootstrap,右击这个类,在弹出菜单中选择“Run As…”=>”Open Run Dialog…”,然后在弹出的“Run”窗口中填入程序运行参数“start”和JVM运行参数catalina.home,如下面窗口所示:
然后点击“Run”按钮,我们将会看到Tomcat正常启动。恭喜,咱们的Tomcat源码已经成功导入Eclipse,这时,可视化的UML分析工具及Debug工具就能派上用场了。
3.5 调试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界面,因为该方法不再执行。
另外,还有一点很有意思。Tomcat6以前版本的源代码分散在好几个子项目中,他们分别叫做jakarta-servletapi-5,jakarta-tomcat-5,jakarta-tomcat-catalina,jakarta-tomcat-connectors和jakarta-tomcat-jasper,我觉得Tomcat的开发者可能嫌这样做太麻烦了,所以Tomcat6版本中将这些子项目都合并在一起了。但是,这种做法不利于我们阅读理解源代码。
附: Eclipse 关联源代码:
在eclipse的preference-->Java-->Build Path-->user library,点开想要添加的jar文件,选择“添加源文件”
1. 下载Tomcat6.0的源代码
首先用 svn export 出源代码, 官网下的源码包我不知道有没有 build.xml , 读者可以验证一下, 我映像中是没有的。
exoprt 之前你可以在浏览器直接输入 http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/ , 然后选择要export 出来的版本。
svn export http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/TOMCAT_6_0_0/ D:\carl_wu\tomcat\src\
2. 编译并运行
代码下载后,我们接下来就是要编译并运行Tomcat。一提编译,我们不禁会想到可爱的Ant。不错,Tomcat正是以Ant作为编译工具,如果您还没有安装,请从http://ant.apache.org/bindownload.cgi 处下载并安装它。然后,请从Tomcat的源代码文件找到build.properties.default文件,并将该文件复制到build.properties,然后打开build.properties,找到下面这行:
base.path=/usr/share/java
将它改为:
base.path= D:/carl_wu/tomcat/share
在Tomcat编译过程中,Ant会让我们下载一些必要的依赖项目,base.path目录就是用来保存这些项目文件的,我们可以将这个属性指向一个已经存在的目录。修改完base.path后,我们回到MS-DOS或Shell窗口,切换到Tomcat源代码所在目录,然后运行ant download命令,如下图所示:
download 一般最新的版本是没有问题的,如果是老版本的话,如果有链接失效了需要在 build.properties文件 改链接。
下完了后,下面就开始真正的编译任务了,请在MS-DOS或Shell窗口内键入ant并回车,Ant将在2分钟内编译1000多个源文件并将Tomcat部署到output目录。编译顺利完成后,请打开Tomcat的源代码目录,会发现多了一个output目录,这是Ant的编译后的输出目录。请打开Tomcat源代码的output\build\bin子目录,双击startup.bat文件,我们即可成功启动Tomcat6.0,此时我们的编译工作就算顺利完成了。
3. 导入源代码到Eclipse
3.1 请打开Eclipse,新建一个Java项目,然后点击“Next”按钮,请选择“Create project from existing source”, 并在Directory文本框内填入我们刚才下载的Tomcat源代码目录(i.e. D:\carl_wu\tomcat\src),然后点击“Next”直至结束。
3.2 我们将会看到Eclipse拒绝编译,这是因为Eclipse找不到该项目指定的库文件。请右击该项目,在弹出菜单中选择“Properties”=>“Libraries”,然后删除两个以TOMCAT_LIBS开头的两个库文件,只保留一个JRE库文件,然后点击“OK”按钮,这时Eclipse开始编译Tomcat源代码,但是发现一堆错误,这是因为我们没有为该项目添加编译所必须的Jar包。
3.3 准备好Tomcat项目所必须的jar文件,其实,刚才我们运行ant download任务时,已经下载过这些jar文件包。
ant.jar (请在ant安装目录的lib子目录中拷贝)
commons-collections-3.1.jar (从刚才Ant下载的commons-collections-3.1子目录中拷贝)
commons-dbcp-1.2.1.jar(从刚才Ant下载的commons-dbcp-1.2.1子目录中拷贝)
commons-logging-1.1.jar(如果您本机没有这个jar包,请从http://commons.apache.org/downloads/download_logging.cgi处下载)
commons-pool-1.2.jar(从刚才Ant下载的commons-pool-1.2子目录中拷贝)
org.eclipse.jdt.core_3.2.0.v_671.jar(从刚才Ant下载的eclipse\plugins子目录中拷贝)
3.4 当我们准备好这些jar文件后,将这些文件拷贝到某一目录(比如说D:\carl_wu\tomcat\tomcat_lib目录),然后在Eclipse中新建一个User Libraries,我们将这个新建的User Libraries命名为TOMCAT_LIBS,并把这些文件加到TOMCAT_LIBS。然后将我们新建的TOMCAT_LIBS添加到Tomcat6项目。另外,别忘了把JUnit库也加到Tomcat6项目。这时Eclipse开始重新编译,编译过程顺利通过,所有错误均消失,此时Tomcat6项目的目录结构如下:
还有,请把test目录也加入到源代码中,方法是在Eclipse中右击”test”目录,然后在弹出菜单中选择“Build path”=>”Use as Source Folder”,之后我们会看到test目录上就多了个源代码的符号,如上图所示。
3.5在Eclipse中运行Tomcat。请找到Tomcat的启动主类org.apache.catalina.startup.Bootstrap,右击这个类,在弹出菜单中选择“Run As…”=>”Open Run Dialog…”,然后在弹出的“Run”窗口中填入程序运行参数“start”和JVM运行参数catalina.home,如下面窗口所示:
然后点击“Run”按钮,我们将会看到Tomcat正常启动。恭喜,咱们的Tomcat源码已经成功导入Eclipse,这时,可视化的UML分析工具及Debug工具就能派上用场了。
3.5 调试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界面,因为该方法不再执行。
另外,还有一点很有意思。Tomcat6以前版本的源代码分散在好几个子项目中,他们分别叫做jakarta-servletapi-5,jakarta-tomcat-5,jakarta-tomcat-catalina,jakarta-tomcat-connectors和jakarta-tomcat-jasper,我觉得Tomcat的开发者可能嫌这样做太麻烦了,所以Tomcat6版本中将这些子项目都合并在一起了。但是,这种做法不利于我们阅读理解源代码。
附: Eclipse 关联源代码:
在eclipse的preference-->Java-->Build Path-->user library,点开想要添加的jar文件,选择“添加源文件”
发表评论
-
Jquery UI Samples
2011-11-03 16:00 691http://www.jsbug.com/lab/ -
Spring配置常见错误整理
2011-11-02 00:42 1247最近在配置Spring的时候经常出现各种错误,从网上摘取做个总 ... -
中文繁体unicode 范围
2011-10-26 10:34 3236String temp = "我是XXXkevin很 ... -
用java在linux下修改文件权限
2011-09-20 13:00 1565String cmdStrs[] = new String[] ... -
禁止浏览器图片缓存
2011-08-08 13:16 1050开发过程中,会因为网页缓存的原因,造成一些数据无法刷新,这里是 ... -
理解ThreadLocal
2011-07-17 09:41 704ThreadLocal是什么 早在JDK 1.2的版本中就提 ... -
Struts2 学习
2011-05-26 17:32 639http://www.iteye.com/wiki/strut ... -
0.1+0.2=0.30000000000000004问题的探究
2011-05-11 17:06 869今天花了一整天的时间 ... -
Java 路径
2011-03-14 11:03 741Java路径问题最终解决方案 ... -
JSP 编码
2011-03-14 09:37 661首先,说说JSP/Servlet中 ... -
JSON 基础教程
2011-03-04 12:15 719在异步应用程序中发送 ... -
深入理解JavaScript闭包(closure)
2011-03-04 11:07 599最近在网上查阅了不少J ... -
CSS框架 27款
2011-02-24 11:06 634http://www.iteye.com/news/20054 ... -
EL表达式浅析
2011-02-23 14:38 933一 JSTL EL表达式语言简 ... -
PL/SQL连接ORACLE
2010-12-14 00:56 1087PLSQL终端是需要先安装or ... -
Java EE 中的Web项目的文件结构
2010-11-15 12:40 1217Java EE 中的Web项目的文件结构 按照 Java E ... -
Java路径简单的分可以分为两种:绝对路径和相对路径
2010-11-15 12:12 1152Java路径简单的分可以分为两种:绝对路径和相对路径。下面介绍 ... -
java中相对路径,绝对路径问题总结
2010-11-15 11:17 645java中相对路径,绝对路径问题总结 ...
相关推荐
总的来说,这些jar包构成了编译Tomcat源码的核心依赖,它们使得开发者能够顺利地构建、测试并理解Tomcat的内部机制,进一步实现个性化定制或进行问题调试。在进行这样的工作时,了解这些工具和库的内部运作原理对于...
Tomcat 是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。 Tomcat 的特点是技术先进、性能稳定、免费,因而...
总结来说,理解和配置Tomcat的JSP编译参数是优化Java Web应用程序性能、提升开发效率和确保错误处理的关键。通过对`web.xml`的适当调整,你可以定制JSP的编译行为,使其更好地适应项目的需求。同时,了解这些参数也...
【描述】"编译好的Tomcat6的源码,导入IDE工具即可使用"意味着用户无需自行下载源码并执行编译步骤,可以直接在集成开发环境(IDE)如Eclipse、IntelliJ IDEA等中导入这个源码工程,便于理解和调试Tomcat的工作原理...
总之,Ant和MyEclipse是Java开发中的得力助手,结合使用可以方便地管理和调试Tomcat源码。通过Ant编译源码,MyEclipse导入和运行,开发者可以更深入地理解Tomcat的工作机制,并进行定制化开发。在实践中不断探索,将...
- **错误处理与日志**:Tomcat的异常处理机制和日志记录系统,对于调试和监控服务器状态十分关键。 通过源码编译,开发者不仅可以掌握Tomcat的工作机制,还可以根据实际需求进行定制化开发,提升系统的稳定性和效率...
源码的提供使得读者有机会深入到Tomcat的内部结构,理解每个组件的功能和交互方式,对于学习和调试都非常有帮助。 书中的源码与编译后的文件相对应,读者可以根据书中的讲解,对照源码进行阅读和实践。例如,可以...
4. **调试Tomcat**:编译后的结果可用于调试目的,开发者可以通过设置断点、查看日志、分析内存占用等手段来定位和解决问题。使用源码编译的优势在于,可以更方便地添加调试信息,或者修改代码以适应特定需求。 5. ...
在深入探讨Tomcat源代码调试和“看不见的Shell第二式之隐藏任意Jsp文件”的概念之前,我们需要了解一些基础的JSP和Tomcat工作原理。 JSP(JavaServer Pages)是一种动态网页技术,允许开发者在HTML中嵌入Java代码,...
tomcat源码调试步骤: 1.到官网下载源码,解压 2.在根目录下把build.properties.default文件名去掉后面的.default 3.把该文件中的base.path值改成你自己指定的目录 4.在根目录中运行ant download,成功后再运行ant 5....
通过深入学习Tomcat的源码,开发者不仅可以了解Web服务器的工作原理,还能提升对Java EE标准的理解,为开发、调试和优化Web应用程序提供强大支持。此外,熟悉Tomcat源码还有助于自定义Tomcat行为,满足特定的性能或...
标题中的“tomcat redis共享session 编译jar包”指的是在Tomcat服务器中利用Redis来实现Session的共享。这通常发生在分布式系统中,多个Tomcat实例需要共享用户的Session信息,以确保用户在不同服务器间的会话一致性...
### IDEA开启自动编译设置步骤详解 #### 一、引言 ...对于那些经常需要快速迭代和调试的应用程序来说,这是一个不可或缺的强大工具。希望本篇文章能帮助你在日常开发工作中更好地利用IDEA的自动编译功能。
【标题】"Tomcat7.0 编译后的源码" 涵盖了Web服务器和应用服务器领域的核心知识,是Java EE开发人员深入理解Servlet容器的重要参考资料。Tomcat7.0是Apache软件基金会下的一个开源项目,它实现了Java Servlet和Java...
在Java开发中,由于其编译执行的特点,相较于动态语言如PHP,进行快速迭代和调试通常需要重启应用服务器,这在Web应用开发中尤其不便。然而,通过使用像DCE VM(Dynamic Code Evolution Virtual Machine)这样的技术...