文章目录
官方地址
https://tomcat.apache.org/download-80.cgi
历史版本:
https://archive.apache.org/dist/tomcat/tomcat-8/
这里最新的是 8.5.55 ,我们就用这个吧
得到 apache-tomcat-8.5.55-src.zip
源码搭建分析
我们在使用tomcat时,俩目录 conf 和 webapps 是不是经常需要修改?
一个负责tomcat的配置文件信息,一个负责应用 。 很显然,我们使用源码构建tomcat环境的时候,也要告诉tomcat这两个目录的位置,以便加载配置文件和应用。
不管形式怎么变, 使用tomcat编译好的二进制还是源码部署编译,tomcat该加载的配置文件都是一样的。
因此 ,使用源码编译需要做出点改变, 比如下面搭建步骤中新建source文件夹目录,存放conf和webapps(实际上,这个目录名字爱叫啥,爱放哪 放哪, 我们只要通过VM options 告诉tomcat就好了,为了方便管理,所以在源码的一级目录下建个目录source)
源码搭建步骤 (Maven管理)
Step1. 新增maven管理文件 pom.xml
解压apache-tomcat-8.5.55-src.zip 后 ,比如我这里放到了D盘 , 在 D:\apache-tomcat-8.5.55-src 下 新建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-8.5.50-src</artifactId>
<name>Tomcat8.5</name>
<version>8.5</version>
<build>
<!--指定源目录-->
<finalName>Tomcat8.5</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.1</version>
<configuration>
<encoding>UTF-8</encoding>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<!--Tomcat是java开发的,封装了很多功能,它需要依赖一些基础的jar包-->
<dependencies>
<!--远程过程调用工具包-->
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc</artifactId>
<version>1.1</version>
</dependency>
<!--soap协议处理工具包-->
<dependency>
<groupId>javax.xml.soap</groupId>
<artifactId>javax.xml.soap-api</artifactId>
<version>1.4.0</version>
</dependency>
<!--解析webservice的wsdl文件工具-->
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<!--Eclipse Java编译器-->
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.5.1</version>
</dependency>
<!--ant管理工具-->
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.0</version>
</dependency>
<!---easymock辅助单元测试-->
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.4</version>
</dependency>
</dependencies>
</project>
Step2. 处理conf 和 webapps
在 D:\apache-tomcat-8.5.55-src 下新建个source目录 ,原因如上分析
在apache-tomcat-8.5.55-src下创建source文件夹 ,将conf、webapps目录移动到 source文件夹中
这里多了其他的,是因为我刚才已经启动tomcat了…
Step3. 导入IEDA
3.1 配置Main Class
新增Application , 选择Main class , 配置VM 参数
3.2 配置VM 参数
VM参数 ,告诉tomcat 家目录一级 log日志文件目录。 【tomcat源码运行需要加载配置文件】
-Dcatalina.home=D:\apache-tomcat-8.5.55-src\source
-Dcatalina.base=D:\apache-tomcat-8.5.55-src\source
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=D:\apache-tomcat-8.5.55-src\source\conf\logging.properties
完整的信息如下:
Step4. 启动tomcat
原因: Jsp引擎Jasper没有被初始化,从而无法编译处理Jsp,Jsp是需要被转换成servlet进一步编译处理的,只需要在tomcat的源码ContextConfig类中的configureStart方法中增加一行代码将Jsp引擎初始化
// 初始化Jasper (JSP解析引擎)
context.addServletContainerInitializer(new JasperInitializer(),null);
重启再次访问 http://locahost:8080/