Tomcat源码导入 IDEA 编辑器

1 下载源码

Tomcat 的源码下载要比上周下载那个 OpenJDK 的源码好下载多了,官网直接给出了打好的源码包,同时在 GitHub 上也能找到对应的仓库。这里我选择的是当前最新的 8.5.x 的版本。

官网下载地址:https://tomcat.apache.org/download-80.cgi

2导入 IDEA

有两种方案导入:

由于本身 Tomcat 项目是使用 Ant 作为包管理工具的,而 Ant 我没有接触过,也不大熟悉,这个方案我直接放弃掉了。

接下来还有一个方案是使用 Maven 的方式进行导入,因为是 Maven 工程,那么一定需要一个 pom.xml 文件,首先在项目的根目录下创建这个文件,并且 copy 以下内容:

<?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.5</artifactId>
  <name>Tomcat8.5</name>
  <version>8.5</version>
  <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>
  <build>
      <finalName>Tomcat8.5</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.5.1</version>
              <configuration>
                  <encoding>UTF-8</encoding>
                  <source>1.8</source>
                  <target>1.8</target>
              </configuration>
          </plugin>
      </plugins>
  </build>
</project>

然后在 IDEA 中点击 File -> New -> Project from Existing Sources... 选择我们刚才解压后的文件夹。

选择 Maven 项目,点击 Finish 直接完成。

3 启动 Tomcat

接下来的事儿就好办多了,首先选择当前的 jdk 版本,我这里使用的是 OracleJDK 1.8.0_221 ,最好是使用 1.8 的版本,因为我尝试过最新的 OpenJDK14 直接通不过编译(说好的向下兼容呢)。

Tomcat 的启动类是 org.apache.catalina.startup.Bootstrap ,直接运行这个类里面的 main 方法就可以启动了。

当然,如果就这么单纯的运行这个类还是会启动报错的,还需要下面几步操作。

  1. 首先需要删除一个测试类 test/util/TestCookieFilter.java

  2. 然后还需要配置启动参数:

    -Dcatalina.home=E:/workspace/apache-tomcat-8.5.60-src
    -Dcatalina.baseE:/workspace/apache-tomcat-8.5.60-src
    -Djava.endorsed.dirs=E:/workspace/apache-tomcat-8.5.60-src/endorsed
    -Djava.io.tmpdir=E:/workspace/apache-tomcat-8.5.60-src/temp
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
    -Djava.util.logging.config.file=E:/workspace/apache-tomcat-8.5.60-src/conf/logging.properties
    -Duser.language=en
    -Duser.region=US

    最后这两个参数是指定了语言环境,如果不配置的话在控制台的日志打印会直接乱码,虽然不影响使用,但是影响到我们观察日志了,最好还是做一下配置。

  3. 添加 jsp 初始化程序  在 org.apache.catalina.startup.ContextConfig.java 的configureStart()方法中添加下面这句话:

    context.addServletContainerInitializer(new JasperInitializer(), null);

    如果不添加的话,启动是能正常启动,但是 Tomcat 的欢迎页就看不到了,会直接报 jsp 解析器空指针。到这里,已经可以运行上面的 org.apache.catalina.startup.Bootstrap 里面的 main 进行启动了,启动完成后在浏览器上输入 http://localhost:8080/ 就可以看到那个经典的 Tomcat 的欢迎页了:

     

  4. 部署程序

如果想在这个 Tomcat 中部署程序的话,需要把程序放在 E:\workspace\apache-tomcat-8.5.60-src\webapps\ROOT ,这个是我自己本地的路径,你们的路径自己做拼接。

然后再在E:\workspace\apache-tomcat-8.5.60-src\conf 这个路径中的 server.xml 配置工程,就和在 Tomcat 中配置 server.xml 是一模一样的,比如:

    在 Host 中增加节点:

<Context docBase="E:\workspace\apache-tomcat-8.5.60-src\webapps\ROOT" path="/mytomcat" reloadable="true"/>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值