Java学习篇之---研究tomcat源码

Java学习篇之---研究tomcat源码

        最近心血来潮想要研究一下Web容器的体系结构,于是选择了最常用的tomcat。打算将tomcat源码放入ide中,编写实例进行代码跟踪。本篇文章中记录了,编译tomcat源码并导入到eclipse中的整个过程。

一、下载

        1、下载tomcat。 这里下载的是本文发表之时,最新版本的tomcat-8.0.27 :

        2、下载ant:

        3、IDE选择eclipse 4.4.1。

二、路径配置:

        1、将ant下载下来解压后重命名为apacheAnt放到E盘,将路径

E:\apacheAnt\bin

配置到系统环境变量中。

成功后在任意目录下输入命令则会如图所示:


        2、将tomcat源码解压在D盘目录:

D:\WorkSpace\tomcatSrcTest\apache-tomcat-8.0.27-src
        3、新建目录:

D:\WorkSpace\tomcatSrcTest\depedencyBasePath
使用ant编译tomcat源码,在编译之前需要下载相关的依赖项目,此目录用于存放依赖项目。

三、依赖项下载并编译:

将apache-tomcat-8.0.27-src文件夹中的build.properties.default重命名为build.properties,

并且打开它,修改base.path=D:\WorkSpace\tomcatSrcTest\depedencyBasePath

在命令行进行如下操作:

显示build failed。

原因找到了:在命令行输入ant 就可以自动下载依赖项了,不用ant download 命令。


编译完成后,我们可以查看目录D:\WorkSpace\tomcatSrcTest\apache-tomcat-8.0.27-src ,可以发现里面多了一个文件夹: output

output文件夹的结构如下:

我们会发现这个结构和从安装包里解压出来的tomcat结构一致。

进入bin,启动tomcat


Tomcat启动成功了,说明——ant编译tomcat成功了!

四、导入到eclipse中:

        1、新建一个Java项目,命名为tomcat8:

        2、导入代码:

import->file system

在From directory选择tomcat源码,选择java和test(如果你需要测试的话选择test),如下图:

在into folder中选择我们刚新建的tomcat8,finish。

将java、test文件夹设置为source folder,如下图所示:

此时文件目录如下图所示:

        3、导入jar包:

上面那些不爽的红叉是因为缺少jar的原因,我们现在需要那些jar包呢?

test需要

junit.jar

这个直接用eclipse里面的即可。

java中需要:

  • ant.jar
  • jaxrpc.jar
  • org.eclipse.jdt.core_3.3.1.v_780_R33x.jar
  • wsdl4j-1.6.2.jar
ant.jar位置:
E:\apacheAnt\lib
jaxrpc.jar位置:
E:\eclipse-jee-luna-SR1-win32-x86_64\eclipse\plugins\javax.xml.rpc_1.1.0.v201209140446\lib
org.eclipse.jdt.core_3.3.1.v_780_R33x.jar位置:
E:\eclipse-jee-luna-SR1-win32-x86_64\eclipse\plugins
easymock-3.3.jar下载位置:
http://sourceforge.net/projects/easymock/
wsdl4j-1.6.2.jar包是我在以前项目的lib文件夹中找到的

导入完这几个jar包后,项目中test文件夹中仍然报错:


姑且不管了。

        4、在eclipse中启动tomcat:

找到类:org.apache.catalina.startup包中的Bootstrap类。

run as:在Arguments的VM arguments中设置

-Dcatalina.home="D:\WorkSpace\tomcatSrcTest\apache-tomcat-8.0.27-src\output"


然后就可以启动了!

Run As->Java Application

        5、启动成功:

问题:

为什么要设置-Dcatalina.home="D:\WorkSpace\tomcatSrcTest\apache-tomcat-8.0.27-src\output\build"?

首先说明output是什么——它就是ant编译出来的output文件夹,大家可以试试删除里面的东西看还是否可以成功启动。

如果不配置这个参数又会发生什么情况呢?删除-Dcatalina.home="D:\WorkSpace\tomcatSrcTest\apache-tomcat-8.0.27-src\output\build",报错:

十月 15, 2015 9:49:25 上午 org.apache.catalina.startup.ClassLoaderFactory validateFile
警告: Problem with directory [D:\WorkSpace\eclipse\tomcat8\lib], exists: [false], isDirectory: [false], canRead: [false]
十月 15, 2015 9:49:25 上午 org.apache.catalina.startup.ClassLoaderFactory validateFile
警告: Problem with directory [D:\WorkSpace\eclipse\tomcat8\lib], exists: [false], isDirectory: [false], canRead: [false]
十月 15, 2015 9:49:25 上午 org.apache.catalina.startup.ClassLoaderFactory validateFile
警告: Problem with directory [D:\WorkSpace\eclipse\tomcat8\lib], exists: [false], isDirectory: [false], canRead: [false]
十月 15, 2015 9:49:25 上午 org.apache.catalina.startup.ClassLoaderFactory validateFile
警告: Problem with directory [D:\WorkSpace\eclipse\tomcat8\lib], exists: [false], isDirectory: [false], canRead: [false]
十月 15, 2015 9:49:25 上午 org.apache.catalina.startup.Catalina load
警告: Unable to load server configuration from [D:\WorkSpace\eclipse\tomcat8\conf\server.xml]
十月 15, 2015 9:49:25 上午 org.apache.catalina.startup.Catalina load
警告: Unable to load server configuration from [D:\WorkSpace\eclipse\tomcat8\conf\server.xml]
十月 15, 2015 9:49:25 上午 org.apache.catalina.startup.Catalina start
严重: Cannot start server. Server instance is not configured.

从中可以看出在项目的根目录下没有lib文件夹,没有conf文件夹,conf中没有server.xml,从而不能实例化server。

那么按照他的提示做,在启动就ok了!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值