搭建Tomcat8源码开发

简介: ##概述 开源软件tomcat,目前几乎已经是Java web开发的必备软件了,目前有很多关于tomcat的书籍,但是里面介绍的大多是关于tomcat的配置,已经通过配置对tomcat进行一些跟应用业务功能的调优,作为一个Java开发人员,感觉如果仅仅只是了解一些配置,可能稍微少了一点什么,最好能够深入到源代码中进行学些和了解。 在Google上搜索了很多关于tomcat源码环境搭建的文章,发

概述

开源软件tomcat,目前几乎已经是Java web开发的必备软件了,目前有很多关于tomcat的书籍,但是里面介绍的大多是关于tomcat的配置,已经通过配置对tomcat进行一些跟应用业务功能的调优,作为一个Java开发人员,感觉如果仅仅只是了解一些配置,可能稍微少了一点什么,最好能够深入到源代码中进行学些和了解。
在Google上搜索了很多关于tomcat源码环境搭建的文章,发现按照文章的步骤,几乎都启动不了,于是自己尝试搭建,下面是搭建的方法。

基础环境搭建

  1. 下载tomcat源代码,我这里是通过svn的方式下载的,svn下载地址
    2.下载安装maven工具,这里我就不多说了,安装说明太多了,自己网上找。

3.IDE,我这里使用idea

生成maven工程

我的代码本地目录是:/Users/helanzhou/Documents/helanzhou/java/Tomcat/tomcat8/tomcat-8.5.5-sourcecode。先在该目录下生成一个pom.xml文件,pom文件的内容为:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>Tomcat8.0</artifactId>
    <name>Tomcat8.0</name>
    <version>8.0</version>

    <build>
        <finalName>Tomcat8.0</finalName>
        <sourceDirectory>java</sourceDirectory>
        <testSourceDirectory>test</testSourceDirectory>
        <resources>
            <resource>
                <directory>java</directory>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>test</directory>
            </testResource>
        </testResources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>3.4</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>
        <dependency>
            <groupId>org.eclipse.jdt.core.compiler</groupId>
            <artifactId>ecj</artifactId>
            <version>4.5.1</version>
        </dependency>
    </dependencies>
</project>

在这里,我把javatest这两个模块到加载到pom工程里,你也可以选择将test工程移除,这样可以省不少事情。

在idea中导入tomcat pom工程

将tomcat的pom工程导入到idea中,这个时候,你可以找到tomcat的启动类org.apache.catalina.startup.Bootstrap, 找到main方法,尝试启动tomcat,这个时候肯定是报错的,因为你还有很多后面的步骤没有完成。

1.需要设置一个运行时的CATALINA_HOME目录,你需要下载一个tomcat软件的压缩包,由于我选择的是tomcat-8.5.5的源代码,下载对应的tomcat版本,tomcat下载地址
2.和tomcat-8.5.5-sourcecode这个目录的上层目录上,建一个和该目录平行的目录catalina-home,将tomcat软件解压后,在解压的目录下,将以下目录拷贝到catalina-home中:

bin
conf
lib
logs
temp
webapps
work

在本地的目录结构是这样的:
_2016_10_16_7_07_14

3.在idea的右上角找到run这个按钮,旁边有Edit Configurations...这个选项,点击它。得到一个弹出框。

Man class:中填入,org.apache.catalina.startup.Bootstrap
VM options:中填入,你刚刚设置catalina-home路径,我的是:-Dcatalina.home="/Users/helanzhou/Documents/helanzhou/java/Tomcat/tomcat8/catalina-home"
Working directory是默认的,不用管
Use class path of module里选择Tomcat8.0,这个和你在pom.xml中的配置有关
JRE,我选择的是1.8

如下图:
_2016_10_16_8_02_07

4.保存上面的配置,然后在右上角选择run,这个时候,可以启动起来了,你可以在控制台上看到下图的启动日志:
_2016_10_16_8_03_35
如果你将test工程也包含在pom工程里,有可能你会启动失败,报错的类是:TestCookieFilter.java 报里面的CookieFilter.java类不存在,你可以选择注释,也可以选择实现该filter,我是注释掉的。

5.打开chrome浏览器,输入127.0.0.1:8080,这时候,你能够得到下面的页面:
_2016_10_16_7_23_19

这个时候,说明你的tomcat环境配置已经成功了,接下来,开启你的tomcat源码调试之旅吧!

相关文章
|
6月前
|
安全 Java 应用服务中间件
阿里技术官架构使用总结:Spring+MyBatis源码+Tomcat架构解析等
分享Java技术文以及学习经验也有一段时间了,实际上作为程序员,我们都清楚学习的重要性,毕竟时代在发展,互联网之下,稍有一些落后可能就会被淘汰掉,因此我们需要不断去审视自己,通过学习来让自己得到相应的提升。
|
3月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
3月前
|
jenkins 持续交付 开发工具
自动化开发之旅:Docker携手Jenkins,与Git和Tomcat共舞持续集成
【8月更文挑战第13天】在软件开发中,持续集成(CI)通过自动化构建、测试与部署提升效率与稳定性。Docker、Jenkins、Git和Tomcat构成CI的黄金组合:`git push`触发Jenkins作业,利用Docker确保环境一致性,最终将应用部署至Tomcat。首先配置Git Webhooks以触发Jenkins;接着在Jenkins中创建作业并使用Docker插件模拟真实环境;通过Maven构建项目;最后部署至Tomcat。这套流程减少人为错误,提高开发效率,展示了技术的力量与流程的革新。
85 0
|
4月前
|
算法 Java 应用服务中间件
开发与运维机制问题之在Tomcat的类加载机制中,如果BootstrapClassLoader没有加载成功类,Tomca如何解决
开发与运维机制问题之在Tomcat的类加载机制中,如果BootstrapClassLoader没有加载成功类,Tomca如何解决
22 0
|
4月前
|
Java 应用服务中间件 API
开发与运维机制问题之Tomcat要打破双亲委派机制如何解决
开发与运维机制问题之Tomcat要打破双亲委派机制如何解决
36 0
|
4月前
|
Java 应用服务中间件 Linux
Tomcat安装部署[单机软件],可以让用户开发的WEB应用程序,变成可以被访问的网页,Tomcat的使用需要jdk环境
Tomcat安装部署[单机软件],可以让用户开发的WEB应用程序,变成可以被访问的网页,Tomcat的使用需要jdk环境
|
6月前
|
Java 应用服务中间件 Apache
Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目
Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目
81 1
|
6月前
|
存储 负载均衡 NoSQL
【分布式技术架构】「Tomcat技术专题」 探索Tomcat集群架构原理和开发分析指南
【分布式技术架构】「Tomcat技术专题」 探索Tomcat集群架构原理和开发分析指南
132 1
|
6月前
|
设计模式 算法 前端开发
Tomcat的源码剖析, 启动过程你会吗?
基于JMX Tomcat会为每个组件进行注册过程,通过Registry管理起来,而Registry是基于JMX来实现的,因此在看组件的init和start过程实际上就是初始化MBean和触发MBean的start方法,会大量看到形如: Registry.getRegistry(null, null).invoke(mbeans, "init", false); Registry.getRegistry(null, null).invoke(mbeans, "start", false); 这样的代码,这实际上就是通过JMX管理各种组件的行为和生命期。
35 0
|
6月前
|
架构师 Java 关系型数据库
一线架构师开发总结:剖析并发编程+JVM性能,深入Tomcat与MySQL
每一个程序员都有自己清晰的职业规划和终极目标,无论之后是继续钻研技术,还是转管理岗、产品岗,都是需要自己具备有一定的实力,换句话说技术要牛逼。架构师,是很多程序员的终极目标,而成为一名Java架构师,那就需要对自己自身有一定要求,不仅技术能力要过硬,还需要有组织能力和提出解决方案的能力。那么作为架构师,需要掌握哪些技术呢?
一线架构师开发总结:剖析并发编程+JVM性能,深入Tomcat与MySQL