1      工具准备

需要SVN、Maven、JDK、Eclipse、Eclipse M2插件

2      下载源码及发布包

源码在这里:http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_29

发布包在这里:http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.29/bin/

说明:下载发布包这个步骤是可选的,好处是免得从源码再自行构建,节省时间;另外发布包里的配置文件等,后续可以直接拿来用,比较方便

3      整理目录

前面下载得到了源码和发布包,现在要把它们放到同一个目录里,再整理一下,方便后面把它转化成eclipse工程,毕竟后续读源码,以及调试,都要在eclipse里完成

新建一个单独的目录,叫tomcat-7.0.29,然后把刚才下载的源码和发布包都放进去,源码目录重命名为code;发布包目录重命名为launch

得到的目录结构见下图:

一会就会把这个目录导入eclipse,变成可运行,可调试的eclipse工程

4      转换成maven工程

将附件pom.xml放入目录,与code、launch目录平行

得到的目录结果见下图:

说明:这也不是必须的,只是个人习惯

5      导入eclipse

导入成功以后,eclipse里的工程目录结构如下图:

接下来就可以在eclipse里运行和调试tomcat了,也可以随意修改源代码,或者自己添加测试用例

6      启动tomcat

Tomcat启动入口类是:org.apache.catalina.startup.Bootstrap

平时我们用发布包启动Tomcat一般是用脚本startup.bat或startup.sh,其实就是在脚本中先处理启动参数和系统变量,然后调用上面这个入口类

所以在eclipse里启动,我们也就是直接执行这个类的Main方法,只是要模拟脚本,设置一下启动参数和系统变量

6.1      方法1

在VM arguments中,拷贝以下参数:

-Dcatalina.home=launch -Dcatalina.base=launch -Djava.endorsed.dirs=launch/endorsed -Djava.io.tmpdir=launch/temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=launch/conf/logging.properties

如下图:

6.2      方法2

直接拷贝一个启动脚本,拷贝到工程目录下,结构如下图:

然后只需要直接在start-tomcat7.launch上右键点击,Run就可以

6.3      启动信息及验证

启动效果如下图:

眼熟,和普通的用脚本启动,还有启动嵌入式tomcat的信息都是一样的

最后用浏览器访问:http://localhost:8080/examples/

7      Tomcat7核心架构

包名

作用

javax.*

各种JSR的API,如JSP、Servlet、EL等

org.apache.catalina

tomcat自身架构

org.apache.coyote

http、ajp协议实现

org.apache.el

EL规范实现

org.apache.jasper

JSP规范实现

org.apache.juli

日志

org.apache.naming

JNDI实现

org.apache.tomcat

工具包、XML解析器等

tomcat源码阅读的更多相关文章

  1. Tomcat源码阅读(二)初始化

    近来,我开始阅读tomcat的源码,感觉还挺清晰易懂:为了方便理解,我参考了网上的一些文章,把tomcat的组成归纳一下:整个tomcat的组成如下图所示: Tomcat在接收到用户请求时,将会通过以 ...

  2. tomcat源码阅读之过滤器

    一.Servlet过滤器: 1.介绍: Servlet过滤器本身并不生成请求和响应对象,它只提供过滤作用. Servlet过滤器能够在Servlet被调用之前检查Request对象,修改Request ...

  3. tomcat源码阅读之SingleThreadModel

    一.接口简介: 实现了SingleThreadModel接口的servlet类只能保证在同一时刻,只有一个线程执行该servlet实例的service方法,在tomcat实现中会创建多个servlet ...

  4. tomcat源码阅读之载入器(Loader)

    一.Java类的载入器: 双亲委派模型: 1.JVM提供了三种类型的类加载器:引导类载入器(bootstrap class loader).扩展类载入器(extension class loader) ...

  5. tomcat源码阅读之BackupManager

    一. 配置: <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOpti ...

  6. tomcat源码阅读之安全机制

    一.领域(Realm): 1.Principal接口代表角色信息,包含了三个成员:用户名.密码.role列表(以逗号分隔),对应了tomcat-users.xml文件中一行user信息: Generi ...

  7. tomcat源码阅读之集群

    一. 配置: 在tomcat目录下的conf/Server.xml配置文件中增加如下配置: <!-- Cluster(集群,族) 节点,如果你要配置tomcat集群,则需要使用此节点. clas ...

  8. tomcat源码阅读之默认连接器

    默认连接器 一.UML图: 1.所有的连接器都要实现Connector接口,必须创建Request对象和Response对象,httpConnector作为默认连接器,肯定也是要实现Connector ...

  9. tomcat源码阅读之部署器

    我们知道web应用是用Context实例表示的,而Context是部署到Host实例中的,因此tomcat的部署器是关联的Host实例.Context实例可以用WAR文件部署,也可以把整个web应用的 ...

随机推荐

  1. NDK Dev

    1.cdt下载(http://www.eclipse.org/cdt/downloads.php) cdt-8.8.0.zip http://mirrors.opencas.cn/eclipse//t ...

  2. BA/PM Competency Module

    No Competency Description BA Weight% PM Weight% 1 Business Analysis:BA   Track Maps   process flows, ...

  3. OpenCV 最小二乘拟合方法求取直线倾角

    工业相机拍摄的图像中,由于摄像质量的限制,图像中的直线经过处理后,会表现出比较严重的锯齿.在这种情况下求取直线的倾角(其实就是直线的斜率),如果是直接选取直线的开始点和结束点来计算,或是用opencv ...

  4. 只有在配置文件中或 Page 说明会 enableSessionState 至 true 时刻,能够使用会话状态。另外,还要确保应用程序配置 // 段包含 System.Web.SessionSta

    首先,弄清楚我们的目的,我的目标是验证用户登录.那是,Session["userName"]!=null 在ok该 起初,我是这么写的,结果给出,提示如果上述错误标题,在调查的很长 ...

  5. spring mvc DispatcherServlet详解之interceptor和filter的区别

    首先我们看一下spring mvc Interceptor的功能及实现: http://wenku.baidu.com/link?url=Mw3GaUhCRMhUFjU8iIDhObQpDcbmmRy ...

  6. mysql 安装配置详解

    作为演示,是不可能完全模拟到生产环境的,因此不可能尽善尽美.由于是在virtualbox里面的centos6.5最小化安装版中安装配置mysql,因此前期的准备工作有很多,那么开始吧.添加一块硬盘,用 ...

  7. C#Socket编程socket.Connect权限出错问题及解决

    最近使用Vs2010编写Socket程序,客户端在调用socket.Connect()时,总是出现: 请求“System.Net.SocketPermission, System, Version=4 ...

  8. listActivity和ExpandableListActivity的简单用法

    http://www.cnblogs.com/limingblogs/archive/2011/10/09/2204866.html 今天自己简单的总结了listActivity和Expandable ...

  9. 惠普 Compaq 6520s 无线开关打不开

    问题描述:键盘上面的无线开关怎么按都打不开,始终是出于黄色的状态   解决方法:尝试恢复bios默认值测试: 开机不停点击F10进入bios,选择File选项,选择Restore Defaults-- ...

  10. ASP.NET Excel数据导出数据库

    /// <summary> /// 根據gridview導出excel /// </summary> /// <param name="ctl"> ...