官方地址
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
代码语言:javascript复制<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.0modelVersion>
<groupId>org.apache.tomcatgroupId>
<artifactId>apache-tomcat-8.5.50-srcartifactId>
<name>Tomcat8.5name>
<version>8.5version>
<build>
<finalName>Tomcat8.5finalName>
<sourceDirectory>javasourceDirectory>
<resources>
<resource>
<directory>javadirectory>
resource>
resources>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.1version>
<configuration>
<encoding>UTF-8encoding>
<source>8source>
<target>8target>
configuration>
plugin>
plugins>
build>
<dependencies>
<dependency>
<groupId>javax.xmlgroupId>
<artifactId>jaxrpcartifactId>
<version>1.1version>
dependency>
<dependency>
<groupId>javax.xml.soapgroupId>
<artifactId>javax.xml.soap-apiartifactId>
<version>1.4.0version>
dependency>
<dependency>
<groupId>wsdl4jgroupId>
<artifactId>wsdl4jartifactId>
<version>1.6.2version>
dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compilergroupId>
<artifactId>ecjartifactId>
<version>4.5.1version>
dependency>
<dependency>
<groupId>antgroupId>
<artifactId>antartifactId>
<version>1.7.0version>
dependency>
<dependency>
<groupId>org.easymockgroupId>
<artifactId>easymockartifactId>
<version>3.4version>
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源码运行需要加载配置文件】
代码语言:javascript复制-Dcatalina.home=D:apache-tomcat-8.5.55-srcsource
-Dcatalina.base=D:apache-tomcat-8.5.55-srcsource
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=D:apache-tomcat-8.5.55-srcsourceconflogging.properties
完整的信息如下:
Step4. 启动tomcat
访问 http://locahost:8080/
原因: Jsp引擎Jasper没有被初始化,从而无法编译处理Jsp,Jsp是需要被转换成servlet进一步编译处理的,只需要在tomcat的源码ContextConfig类中的configureStart方法中增加一行代码将Jsp引擎初始化
代码语言:javascript复制 // 初始化Jasper (JSP解析引擎)
context.addServletContainerInitializer(new JasperInitializer(),null);
重启再次访问 http://locahost:8080/