1. 需要准备好下面这些工具
JDK 1.6+
Maven 2或3
TortoiseSVN 1.7+ (从1.7开始".svn"目录集中放在一处了,不再每个目录下都放一份)
Eclipse 3.5+
这4个工具不在这里描述怎么配置了,如果你是有两三年开发经验的Java开发人员,正常来讲都一直在用了。
另外,分析tomcat源代码不需要对这4个工具做什么特殊配置。
2. 下载Tomcat的源代码
Apache旗下的开源项目基本上都放在这: http://svn.apache.org/repos/asf
里面包含了tomcat、struts、hadoop、hbase等流行的开源项目的源代码,
可以直接用浏览器打开这个URL,或者用TortoiseSVN的Repository Browser打开它。
tomcat的svn是: http://svn.apache.org/repos/asf/tomcat , 如下图所示:
目前tomcat有4个大分支:
5.5 : http://svn.apache.org/repos/asf/tomcat/tc5.5.x
6.0 : http://svn.apache.org/repos/asf/tomcat/tc6.0.x
7.0 : http://svn.apache.org/repos/asf/tomcat/tc7.0.x
8.0 : http://svn.apache.org/repos/asf/tomcat/trunk
5.5分支会在今年9月30号后停止维护,所以除非有历史遗留系统,不推荐再去读它的代码,
6.0分支是比较成熟的,在生产环境用得比较多,
目前官方对这个分支进入维护、bugfix阶段,很少有新功能添加进来了,
我个人也不推荐读它的代码,代码相对7.0来讲比较脏乱。
7.0分支完整实现了servlet 3.0规范,已陆续发布了27个小版本,己经稳定了,可用于生产环境,
代码比5.5、6.0分支干净整洁得多,这也是我强烈向你推荐的版本。
8.0分支主要关注web socket和spdy,正处于活跃开发阶段,代码变动比较频繁,保持关注即可。
所以这篇文章讲的是7.0分支,研究tomcat推荐直接提取svn的源代码:
用TortoiseSVN checkout这个svn的代码: http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk
放到D:\Tomcat7\trunk (你可以换别的目录)
然后再从这下载一个二进制分发包(Binary Distributions)
http://labs.mop.com/apache-mirror/tomcat/tomcat-7/v7.0.27/bin/apache-tomcat-7.0.27.zip
解压后放到D:\Tomcat7,顺便把"apache-tomcat-7.0.27"重命名成launch吧,
用这个二进制分发包而不是从源代码构建只是为了节省时间,
直接用它conf目录里面的配置文件和webapps下的例子。
3. 把它变成maven工程
主要是添加几个依赖(ecj、ant、jaxrpc等),否则的话导入eclipse后会有编译错误,
另外,因为tomcat不是标准的maven工程项目,比如没有src\main\java这样的目录,
所以要调整一下sourceDirectory和testSourceDirectory,下面是一个完整的pom文件,
直接放到D:\Tomcat7目录即可(pom.xml与之前的launch、trunk目录并列)
(注: pom.xml文件在附件中)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.tomcat</groupId> <artifactId>Tomcat7.0</artifactId> <name>Tomcat7.0</name> <version>7.0</version> <build> <finalName>Tomcat7.0</finalName> <sourceDirectory>trunk/java</sourceDirectory> <testSourceDirectory>trunk/test</testSourceDirectory> <resources> <resource> <directory>trunk/java</directory> </resource> </resources> <testResources> <testResource> <directory>trunk/test</directory> </testResource> </testResources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.eclipse.jdt.core.compiler</groupId> <artifactId>ecj</artifactId> <version>3.7.2</version> </dependency> <dependency> <groupId>ant</groupId> <artifactId>ant</artifactId> <version>1.7.0</version> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>javax.xml</groupId> <artifactId>jaxrpc</artifactId> <version>1.1</version> </dependency> </dependencies> </project>
4. 导入Eclipse
在命令行窗口中进入D:\Tomcat7目录,执行 mvn eclipse:eclipse 就可以转成eclipse工程项目了,
然后打开eclipse,点"File->Import->General->Existing Projects into Workspace",
最后打开D:\Tomcat7就能看到Tomcat7.0这个项目了。
(如果eclipse装了m2e插件不用执行mvn eclipse:eclipse的,可以直接导入maven工程)
5. 在Eclipse中让Tomcat跑起来
在Eclipse中打开org.apache.catalina.startup.Bootstrap类,
在编辑区右击,点"Run As->Run configurations",然后双击"Java Aplication"就会出来一个新的"Bootstrap",
选中它,在右边点击"Arguments"那一栏,把下面的内容copy到"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
如下图:
然后点run按钮,就可以启动tomcat了,启动成功会在Eclipse的console中显示:
2012-6-10 14:25:31 org.apache.catalina.startup.Catalina start
信息: Server startup in 359 ms
除上面这种方式外,这里还有一个Eclipse的launch脚本 (start-tomcat7.launch (注: 在附件中) ) ,
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> <listEntry value="/Tomcat7.0/trunk/java/org/apache/catalina/startup/Bootstrap.java"/> </listAttribute> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listEntry value="1"/> </listAttribute> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.apache.catalina.startup.Bootstrap"/> <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="start"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Tomcat7.0"/> <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-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"/> </launchConfiguration>
可以放到D:\Tomcat7目录,然后flush一下Eclipse,在Eclipse中右击这个文件,点Run As启动Tomcat,点Debug As可以调试Tomcat。
下图是Tomcat在Eclipse中的项目布局:
最后,打开你的浏览器,输入 http://127.0.0.1:8080/examples/ 看看例子吧。
6. 简单的源代码阅读指南:
包名 用途
=================================================
javax servlet/jsp/el相关的api
org.apache.catalina tomcat自身架构
org.apache.coyote http、ajp协议实现相关的类
org.apache.el 实现el规范
org.apache.jasper 实现jsp规范、编译jsp文件
org.apache.juli tomcat的日志系统
org.apache.naming jndi实现
org.apache.tomcat tomcat的工具包、net、digester xml解析器
阅读顺序:
可以从org.apache.catalina.startup.Bootstrap这个类开始看起,
然后到org.apache.catalina.startup.Catalina,
在Catalina类中会触发conf/server.xml文件的解析,
这时要看org.apache.tomcat.util.digester中的类,
解析的过程中会用到org.apache.catalina.startup包中的很多RuleSet类,
server.xml文件解析完后,会生成org.apache.catalina.core包中的各种StandardXXX类的实例,
比如StandardServer、StandardService、StandardEngine等等,
这些Standard组件都是有生命周期的,接着会调用他们的init、start等方法,
会触发下面这些组件进入init、start状态
org.apache.catalina.connector.Connector
org.apache.coyote.http11.Http11Protocol
org.apache.tomcat.util.net.JIoEndpoint
在JIoEndpoint(或NioEndpoint、AprEndpoint)中会监听8080这样的端口,
有请求进来了,就进行相关的io操作,接着转到org.apache.coyote包中的相应类进行协议解析,
生成org.apache.catalina.connector.Request和org.apache.catalina.connector.Response实例,
然后转到各种Valve、应用Filter,最后到达应用的Servlet/JSP。
下图描述了Tomcat7的核心架构:
相关推荐
### Tomcat配置入门与配置多个项目详解 #### Tomcat简介 Tomcat是一个开源的轻量级Web应用服务器,因其小巧灵活、易于部署等特点被广泛应用于Java Web应用的开发与测试阶段。它支持Servlet和JSP等Java Web技术,...
1.资源包内含有基础环境搭建、源码、数据库脚本、项目配置与运行教程,项目经过严格调试,100%能运行,项目导入与运行视频:https://www.bilibili.com/video/BV1PR4y1N7Ck/ 2.项目运行依赖于JDK、IDEA、Tomcat、...
1.资源包内含有基础环境搭建、源码、数据库脚本、项目配置与运行教程,项目经过严格调试,100%能运行,项目导入与运行视频:https://www.bilibili.com/video/BV1R34y1a73Q/ 2.项目运行依赖于JDK、IDEA、Tomcat、...
1.资源包内含有源码、数据库脚本、项目配置与运行教程,项目经过严格调试,100%能运行,本站资源介绍: https://atyouqidian.blog.csdn.net/article/details/125131698 2.项目运行依赖于JDK、IDEA、Tomcat、Maven、...
【使用指南】在配置完成后,开发者可以在Eclipse中创建Java项目,编写源代码,利用内置的Tomcat服务器进行本地调试。同时,Eclipse提供了与Tomcat的紧密集成,可以实现一键部署和启动应用,大大简化了开发流程。通过...
9. **源码分析**:对于标签中的“源码”部分,可以深入研究Tomcat6的源代码,了解其内部工作原理,这对于进阶学习和定制化开发非常有帮助。 10. **工具集成**:了解如何将Tomcat6与开发工具(如Eclipse、IntelliJ ...
1.资源包内含有基础环境搭建、源码、数据库脚本、项目配置与运行教程,项目经过严格调试,100%能运行,项目导入与运行视频 https://www.bilibili.com/video/BV1v44y1V7TE 2.项目运行依赖于JDK、IDEA、Tomcat、...
在本文中,我们将深入探讨如何搭建一个基于MyEclipse 6.5、Flex 3、Tomcat 6.0和ds-console.war的开发环境。这个环境主要用于开发和部署使用Flex前端与Java后端交互的应用程序,特别是通过LCDS(LiveCycle Data ...
1.资源包内含有源码、数据库脚本、项目配置与运行教程、高质量论文范文、毕业论文撰写视频教程,项目经过严格调试,100%能运行。 2.项目运行依赖于JDK、IDEA、Tomcat、MySQL等,需要安装和配置, 参考B站视频合集...
7. `work`:存放JSP编译后的Servlet源代码和字节码,方便调试和优化。 启动Tomcat,可以通过在`bin`目录下双击`startup.bat`脚本来实现。如果遇到Tomcat启动后命令行窗口瞬间关闭的问题,可能是因为没有正确配置`...
总之,“jdk1.8+eclipse4.8+tomcat8.5.zip”是为Java EE开发准备的一站式解决方案,涵盖了开发、运行和调试的全套工具,旨在提升开发效率,降低入门门槛。对于初学者和专业开发者来说,都是一个非常实用的资源。
本资源包含"JAVA WEB从入门到精通"这本书随书附带的第2到第10章的源代码,这些章节通常涵盖了Web开发的基础到进阶内容。 1. **基础概念**:Java Web开发首先涉及Servlet和JSP(JavaServer Pages),它们是构建动态...
JDK包含了编译Java源代码所需的Java编译器(javac)、运行Java程序的Java虚拟机(JVM)以及一些开发者工具。安装完成后,需要配置环境变量,主要包括JAVA_HOME、PATH和CLASSPATH。这些环境变量的设置使得系统能够...
1.资源包内含有源码、数据库脚本、项目配置与运行教程,项目经过严格调试,100%能运行。 2.项目运行依赖于JDK、IDEA、Tomcat、MySQL等,需要安装和配置, 参考B站视频合集(项目运行环境搭建 ...
Apache Tomcat是Apache软件基金会的一个项目,它是一个开放源代码的Web应用服务器,主要处理Java Servlet和JavaServer Pages(JSP)。Tomcat严格遵循Java EE的Web应用服务器规范——Java Servlet和JavaServer Pages ...
Eclipse开发入门与项目实践 Eclipse开发入门与项目实践 源代码 Eclipse开发入门与项目实践 源代码 Eclipse开发入门与项目实践 源代码 第一部分 开发入门 第1章 Eclipse概述及开发环境搭建 2 1.1 Eclipse概述 2...
7. **Eclipse或IntelliJ IDEA**:这些是常用的Java集成开发环境(IDE),它们提供了强大的代码编辑、调试和项目管理功能,是Java Web开发者的得力工具。 8. **Maven或Gradle**:构建管理系统,帮助管理和构建Java...
10. **与IDE集成**:学习如何在Eclipse、IntelliJ IDEA等集成开发环境中配置Tomcat,以便于开发和调试Java Web应用程序。 通过深入研究Apache Tomcat 6.0.16,开发者可以更好地理解Web服务器的工作原理,提升Java ...