编写本身的tomcat, 并运行tomcat源码于eclipse中

最近慢慢闲了,打算圆了之前留下的愿望。就是把tomcat的源码都走一边。能够帮助我更深层次的理解一个web服务器的工做原理。php

这个周末,我便埋出了第一步。将基于eclipse的整个tomcat的源码开发环境建立成功,并成功的调试tomcat源码。下面记录我所作的事情。java

JDK 1.6

下载oracle或者IBM JDK 1.6版本。1.6是必须的,由于tomcat7的明确要求JDK1.6来build。web

准备eclipse

1. 到http://www.eclipse.org/downloads/下载一个eclipse。我下载的是最新的Indigo版本。选择的是IDE for Java EE developers。apache

2. 给eclipse安装SVN插件,tomcat的源代码使用的版本控制工具是SVN。咱们须要用SVN来同步源码。http://www.eclipse.org/subversive/downloads.php提供了SVN插件的安装步骤。tomcat

准备ANT

http://ant.apache.org/选择1.8.3的版本下载。服务器

设置环境变量

添加环境变量JAVA_HOME和ANT_HOME。将%ANT_HOME%\bin添加到PATH中。网络

建立目录管理你的文件

为了更好的管理你的文件,你最好组织一下本身的文件结构,个人文件结构以下。后面全部的工做都基于我下面的文件结构。oracle

job - 工做的根目录。app

apache-ant-1.8.3是ant的home。eclipse

downloads - 刚才网上下载的全部原始文件都在这里面。此文件对于tomcat运行没有影响。

eclipse - eclipse indigo for java ee developers

jad - 反编译工具。此文件对于tomcat运行也没有影响。

screen - 用于保存我屏幕截图的。对于tomcat运行没影响。

tomcat-build-download - 重要文件,在build tomcat的时候,build会自动下载一下tomcat所依赖的包。全部的依赖会自动下载都这个文件下。

tomcat-compile-dependence - tomcat源码导入eclipse以后编译的时候所依赖的包都存放在这个文件下面。

workspace - eclipse的工做目录。

workspace\tc7.0.x - 从svn同步下来的tomcat源码。

workspace\tomcat - 为tomcat源码建立的java项目。

下载源码

1,打开eclipse,转到SVN Repository exploring。

2,建立一个新的repository。URL为tomcat的repository地址http://svn.apache.org/repos/asf/tomcat。能够从tomcat官网找到。

 3. 结束之后,将看到eclipse左边栏中建立好的repository。展开repository,找到最近版本的tomcat 7.0.x. 展开, 选择trunk.右键点击,在菜单中选择"check out".

4, 文件tc7.0.x将会被下载到workspace目录,因而产生了目录 workspace\tc7.0.x 。

Build源码

在下载好的tc7.0.x目录下面,能够找到BUILDING.txt。这个文件里面给出了详细的Build方法。也列出了全部的build命令。若是你们只是想快速进行下去,能够按照我下面写的步骤快速搭建你的环境。

1,在下载好的文件下面,找到build.properties.default. 复制这个文件,到同级目录并重命名为build.properties.

2,打开build.properties, 找到base.path,替换此行,改成base.path=C:/job/tomcat-build-download.   Base path声明了tomcat build所依赖的外部资源的目录。Build过程当中全部的网络依赖资源,都下载到此目录下面。

3,在tc7.0.x目录下运行命令ant.

ant成功后,外部依赖会下载到base.path下面。Source code会被build成可运行文件,输出到\job\workspace\tc7.0.x\output中。

导入eclipse

1,建立一个空的eclipse java project。起名为tomcat.

2,点击项目->右键菜单->import... -> File System->

3, 点击Finish,将会完成导入。

4,源代码成功的导入到eclipse中,可是存在编译错误。这是由于缺失了一些编译所依赖的包。下面咱们找出全部的依赖包,将他们放入目录tomcat-compile-dependence中。

5,在build的时候,ant会下载一些依赖包,当完成编译之后,ant会把一些依赖包删除掉。为了把全部的依赖包从新下载一边,须要在tc7.0.x目录下运行命令ant extras

6,找到下面的jar,把他们copy到tomcat-compile-dependence中。

C:\job\apache-ant-1.8.3\lib\ant.jar

C:\job\tomcat-build-download\ecj-3.7.2\ecj-3.7.2.jar

C:\job\tomcat-build-download\jaxrpc-1.1-rc4\geronimo-spec-jaxrpc-1.1-rc4.jar

C:\job\tomcat-build-download\wsdl4j-1.6.2\wsdl4j-1.6.2.jar

7,将tomcat-compile-dependence中全部的包导入project的build path中。tomcat编译经过。

在eclipse中运行源码

打开run as configuration...

点击run,就能跑起来了。

能在eclipse中运行,天然就能debug。

2013年1月29日,更新

更新缘由: 由于tomcat的源码是运行在eclipse中,并直接运行的java类启动tomcat的. 忽然有一天,我写了一个application, 并放在tomcat的webApps下面. 我想remote debug个人application. 这须要开启tomcat的remote debug模式. 其实,就是开启jvm的debug模式, 开启方法以下图:

如过想开启tomcat的log,还须要在VM arguments中添加:

-Djava.util.logging.config.file=d:\servers\tomcatSrc\src\output\build\conf\logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
相关文章
相关标签/搜索