Tomcat-构建Tomcat源码环境

简介: Tomcat-构建Tomcat源码环境

一、构建Tomcat源码环境


  工欲善其事必先利其器,为了学好Tomcat源码,我们需要先在本地构建一个Tomcat的运行环境。



1.源码环境下载


源码有两种下载方式:


1.1 官网下载

tomcat.apache.org/

image.png

image.png

1.2 GitHub下载


当然你也可以通过GitHub来拉取源代码


github.com/apache/tomc…

image.png

2.Maven环境搭建


2.1 环境准备


打开IEDA导入项目,然后在项目中创建一个新的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>apache-tomcat</artifactId>
  <version>8.5</version>
  <dependencies>
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.10.4</version>
    </dependency>
    <dependency>
      <groupId>wsdl4j</groupId>
      <artifactId>wsdl4j</artifactId>
      <version>1.6.2</version>
    </dependency>
    <dependency>
      <groupId>javax.xml</groupId>
      <artifactId>jaxrpc-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.13</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>apache-tomcat</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.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
复制代码


然后设置项目为Maven项目,选中pom.xml文件,鼠标右点。选择 Add as Maven Project .

image.png


在右侧出现的Maven菜单中选择编译项目(compile)


image.png

2.2 项目启动


编译成功后进入 Bootstrap中,启动main方法

image.png

出现如下提示,说明启动成功,只是中文乱码了


image.png

2.3 解决中文乱码问题


中文乱码问题的解决方案,修改两处地方即可


1.修改org.apache.jasper.compiler.Localizer#getMessage(java.lang.String)方法


image.png

public static String getMessage(String errCode) {
        String errMsg = errCode;
        try {
            if (bundle != null) {
                errMsg = bundle.getString(errCode);
            }
        } catch (MissingResourceException e) {
        }
        try{
            errMsg = new String(errMsg.getBytes("ISO-8859-1"),"UTF-8");
        }catch (UnsupportedEncodingException e){
            e.printStackTrace();
        }
        return errMsg;
    }
复制代码


2.修改org.apache.tomcat.util.res.StringManager#getString(java.lang.String)


image.png

重启服务

image.png

启动正常,但是访问的时候出现了问题


2.4 解决不支持JSP的问题


启动成功后,在访问首页的时候,出现了500错误,而且提示 无法为JSP编译类


image.png

原因是无法编译jsp。解决也很简单,按照下面步骤操作即可


上面的报错解决方式,可以在org.apache.catalina.startup.ContextConfig类中的


configureStart方法中,添加一下JSP解析器初始化即可


context.addServletContainerInitializer(new JasperInitializer(), null);
复制代码

image.png

重启服务:访问搞定


image.png

到此Tomcat的源码环境我们就已经准备好了,接下来就可以开始我们的Tomcat源码之旅了!!!



相关文章
|
2月前
|
JavaScript Java 应用服务中间件
centos部署vue项目(java,tomcat环境的搭建)
centos部署vue项目(java,tomcat环境的搭建)
43 0
|
3月前
|
安全 Java 应用服务中间件
阿里技术官架构使用总结:Spring+MyBatis源码+Tomcat架构解析等
分享Java技术文以及学习经验也有一段时间了,实际上作为程序员,我们都清楚学习的重要性,毕竟时代在发展,互联网之下,稍有一些落后可能就会被淘汰掉,因此我们需要不断去审视自己,通过学习来让自己得到相应的提升。
|
6月前
|
Java 关系型数据库 MySQL
mac,linux环境的基础工具安装【jdk,tomcat】
mac,linux环境的基础工具安装【jdk,tomcat】
90 1
|
5月前
|
缓存 JavaScript 应用服务中间件
Nginx+Tomcat代理环境下JS无法完全加载问题
Nginx+Tomcat代理环境下JS无法完全加载问题
|
2月前
|
设计模式 算法 前端开发
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管理各种组件的行为和生命期。
8 0
|
3月前
|
前端开发 Java 应用服务中间件
架构篇:Tomcat 高层组件构建一个商业帝国
架构篇:Tomcat 高层组件构建一个商业帝国
296 6
|
4月前
|
XML 应用服务中间件 数据库
django2.2.4项目 部署 centos7.3 环境, tomcat与nginx相互切换
django2.2.4项目 部署 centos7.3 环境, tomcat与nginx相互切换
47 0
|
8月前
|
Java 应用服务中间件 Maven
最通俗易懂的 - Tomcat 核心源码仿写 第二版代码
Tomcat 核心源码仿写的第二版代码,升级为Maven项目,并将单线程改为多线程
40 0
|
8月前
|
Java 应用服务中间件 数据格式
Tomcat 核心源码解析 及 仿写
介绍Tomcat的核心功能原理,并仿写Tomcat核心功能源码 包括: 1、如何生成Servlet实例对象并管理 2、如何与浏览器建立连接并获取http报文,解析报文获取请求,并响应 最后有效果演示和源码gitee地址
85 0
|
8月前
|
Java 应用服务中间件 Linux
windows环境下tomcat开机启动设置
windows环境下tomcat开机启动设置
125 0