zoukankan      html  css  js  c++  java
  • tomcat源码阅读

    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解析器等

  • 相关阅读:
    js 实现树效果
    (转)JavaScript 冒泡实例与阻止冒泡方法
    (转)js全页面刷新方法
    js 右键菜单
    (转)js,jQuery屏蔽鼠标右与jquery 鼠标右键事件、左键单击事件判定
    Flex取xml文件中的值
    oracle相关时间计算,得到季度第一天、最后一天
    (转)ASP.NET MVC VS2010中更改默认调试浏览器
    JS 与 后台如何获取 Cookies
    js 弹出新页面
  • 原文地址:https://www.cnblogs.com/unixshell/p/3451213.html
Copyright © 2011-2022 走看看