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

  • 相关阅读:
    How to install VXDIAG Honda, Toyota and JLR SDD software
    16% off MPPS V16 ECU tuning tool for EDC15 EDC16 EDC17
    Cummins INSITE locked and ask for verification code
    How to use BMW Multi Tool 7.3 to replace lost key for BMW X1
    Bleed Brake Master Cylinder with Intelligent Tester IT2
    Porsche Piwis Tester II “No VCI has been detected”,how to do?
    Creader VIII VS. Creader VII+
    How to solve GM MDI cannot complete the installation
    汽车OBD2诊断程序开发 (原文转载,思路很清晰!)
    汽车节温器单片机开发思路
  • 原文地址:https://www.cnblogs.com/unixshell/p/3451213.html
Copyright © 2011-2022 走看看