简介
由于其他原因,我们需要使用SpringBoot打成war包放在外部的Tomcat中运行,本文就以一个案例来说明从SpringBoot打war包到Tomcat配置并运行的全流程经过
环境
SpringBoot 2.6.15
Tomcat 8.5.100
JDK 1.8.0_281
Windows
正文
一、SpringBoot配置打war包
第一步:在Application启动入口同级目录下新增一个继承了Servlet初始化器的类,文中是圈红的ServletInitializer


第二步:在使用Maven构建应用程序时要在插件内排除 spring-boot-starter-web 内置的Tomcat依赖

第三步:显示声明packaging为war

至此,我们在使用Maven命令打包时即可打出war包

二、配置Tomcat
第一步:解决控制台乱码,在以下路径中找到 logging.properties 文件更新
java
apache-tomcat-8.5.100\conf

html
java.util.logging.ConsoleHandler.encoding = GBK
说明:因为CMD命令窗口默认的字符集是GBK而Tomcat中的日志配置文件(logging.properties)中的编码是UTF-8,因此当运行startup.bat时,控制台将输出乱码
第二步:让Tomcat以指定的JDK运行
好处是不必安装JDK了,直接复制安装好的JDK到Tomcat中就可以和Tomcat一体了
1、先将准备好的JDK复制一份到Tomcat文件夹下

2、打开startup.bat配置JDK

bash
:指定jdk版本,注意=前后不能有空格
set JAVA_HOME=D:\dev\apache-tomcat-8.5.100\jdk1.8.0_281
set JRE_HOME=D:\dev\apache-tomcat-8.5.100\jdk1.8.0_281\jre
3、配置项目上下文路径(访问项目前缀)
说明:我们的war包放在了Tomcat的webapps目录下,默认访问项目的路径要加上包名,比如我的war包是vote.war,我访问项目的时候就是 {ip}:{port}/vote/${requestMapping}
但,我不想要前缀也可以访问,那就要配置,本文只提供更改server.xml的方式配置
bash
apache-tomcat-8.5.100\conf
在上面的路径中找到 server.xml 文件,在Host标签中加入Context标签

至此,Tomcat也配置好了,下面运行测试


如果你也想在执行startup.bat时显示我上面那个窗体的配置信息可以直接在startup.bat最下方加入pause即可
bash
pause;
