zoukankan      html  css  js  c++  java
  • 学习tomcat(一)----用IDEA调试tomcat源码

    一直在使用tomcat,但却不怎么熟悉tomcat的“运作流程”,今天就
    参照参考文章进行了代码搭建(代码的github在文末),并修改了一些操作。学习下tomcat的“运作流程”,后续还会有文章对“运作流程”进行分析。

    下载tomcat的源码,配置项目

    不是tomcat用于部署项目的那个版本!是源码(本文中用的是tomcat7.0.67),
    下载地址

    解压tomcat,在根目录下新建一个home目录和一个pom.xml:

    home

    pom.xml:

    <?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>Tomcat7.0.67</artifactId>
        <name>Tomcat7.0.67</name>
        <version>7.0</version>
    
        <properties>
            <java.version>1.7</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>ant</groupId>
                <artifactId>ant</artifactId>
                <version>1.7.0</version>
            </dependency>
            <dependency>
                <groupId>ant</groupId>
                <artifactId>ant-apache-log4j</artifactId>
                <version>1.6.5</version>
            </dependency>
            <dependency>
                <groupId>ant</groupId>
                <artifactId>ant-commons-logging</artifactId>
                <version>1.6.5</version>
            </dependency>
            <dependency>
                <groupId>wsdl4j</groupId>
                <artifactId>wsdl4j</artifactId>
                <version>1.6.2</version>
            </dependency>
            <dependency>
                <groupId>javax.xml.rpc</groupId>
                <artifactId>javax.xml.rpc-api</artifactId>
                <version>1.1</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jdt.core.compiler</groupId>
                <artifactId>ecj</artifactId>
                <version>4.5.1</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <finalName>Tomcat7.0</finalName>
            <sourceDirectory>java</sourceDirectory>
            <resources>
                <resource>
                    <directory>java</directory>
                </resource>
            </resources>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.5</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>

    将webapps目录和conf目录剪切至home目录下,并在home目录下添加lib、work和logs目录如下图:

    这里写图片描述

    使用IDEA打开项目(File>Open)

    等项目加载完后,在run/debug configuration 中创建一个Application用于启动tomcat:
    config
    application
    MainClass填写org.apache.catalina.startup.Bootstrap
    VM options填写-Dcatalina.home=”F:xxxhome”
    F:xxxhome为你之前home目录完整路径
    main

    若下载的tomcat不是源码版,会找不到bootstrap类如下图:
    error

    小错误

    运行项目后会出现下面的错误(但是可以访问http://localhost:8080,不影响调试tomcat):出于强迫症,还是解决下这些错误。
    error1
    error2

    解决的思路:直接搜(Ctrl+shift+n)ContextListener 这个类,发现路径都是在webapps/example中的

    info1
    info2
    info3

    而webapps目录下的都是tomcat自带的项目,于是我就试着将home/webapps目录下的example删除了:

    deleted example

    没想到再运行项目就不报上面的错了:)

    完整代码

    http://huangxiutao.cn
  • 相关阅读:
    Android——继续深造——从安装Android Studio 2.0开始(详)
    PHP——安装wampserver丢失MSVCR110.dll
    Marza Gift for GDC 2016
    Retrieve OpenGL Context from Qt 5.5 on OSX
    Space Time Varying Color Palette
    Screen Space Depth Varying Glow based on Heat Diffusion
    Visualization of Detail Point Set by Local Algebraic Sphere Fitting
    Glass Dragon
    Jump Flood Algorithms for Centroidal Voronoi Tessellation
    京都之行
  • 原文地址:https://www.cnblogs.com/ss0xt/p/8569775.html
Copyright © 2011-2022 走看看