springboot2.0项目发布外部tomcat7 踩过的一些坑
工作场景:领导让我将一个springboot2.0的项目部署到一台服务器上。这台服务器上原始配置为jdk7 与 tomcat7.0.82。领导给我的配置要求是jdk8任意版本与tomcat7.0.92(检测漏洞少),然后开始入坑。
发布步骤大致如下:
1.pom添加依赖
主要是因为springboot项目利用的是自己内置的tomcat,这边就是不依赖内置的tomcat,将其编译的作用域设置为provided
<!--外置tomcat启动-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
2.修改pom打包方式
packaging 修改为war
<groupId>com</groupId>
<artifactId>ding</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
3.改造启动项
就是改成继承SpringBootServletInitializer;因为springboot 自己能认识自己的启动项,而外部tomcat是不认识的,所以要自己继承,并读取配置
@SpringBootApplication
@EnableAsync
//public class DingApplication{
public class DingApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DingApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DingApplication.class, args);
}
}
4.可以打包了mvn clean package -Dmaven.test.skip=true
5.将war包直接放到tomcat 的webapp目录下,启动并查看catania.out日志:
重点:启动tomcat,你可能会遇到一个错:
Caused by: java.lang.NoClassDefFoundError: javax/el/ELManager
这是因为:tomcat提供的el-api 和项目里面的el-api.jar冲突;这时候你需要去找到自己本机上用的el-api的版本,copy到tomcat的lib目录下,覆盖原来的jar包
然后还有jdk版本由jdk7换成jdk8,我决定使用tomcat 指定jdk路径,做法如下:
以下配置均在linux环境下操作,jdk 目录为 /u01/jdk1.8.0_11
修改 catalina.sh ,在 脚本开头 增加 export JAVA_HOME=/usr/java/jdk1.8.0_60 设置。实际配置如图:
版本对应如下:
Spring boot 版本 | Spring Framework | jdk 版本 | maven 版本 |
---|---|---|---|
1.2.0 版本之前 | 6 | 3.0 | |
1.2.0 | 4.1.3+ | 6 | 3.2+ |
1.2.1 | 4.1.3+ | 7 | 3.2+ |
1.2.3 | 4.1.5+ | 7 | 3.2+ |
1.3.4 | 4.2.6+ | 7 | 3.2+ |
1.3.6 | 4.2.7+ | 7 | 3.2+ |
1.3.7 | 4.2.7+ | 7 | 3.2+ |
1.3.8 | 4.2.8+ | 7 | 3.2+ |
1.4.0 | 4.3.2+ | 7 | 3.2+ |
1.4.1 | 4.3.3 | 7 | 3.2+ |
1.4.2 | 4.3.4 | 7 | 3.2+ |
1.4.3 | 4.3.5 | 7 | 3.2+ |
1.4.4 | 4.3.6 | 7 | 3.2+ |
1.4.5 | 4.3.7 | 7 | 3.2+ |
1.4.6 | 4.3.8 | 7 | 3.2+ |
1.4.7 | 4.3.9 | 7 | 3.2+ |
1.5.0 | 4.3.6 | 7 | 3.2+ |
1.5.2 | 4.3.7 | 7 | 3.2+ |
1.5.3 | 4.3.8 | 7 | 3.2+ |
1.5.4 | 4.3.9 | 7 | 3.2+ |
1.5.5 | 4.3.10 | 7 | 3.2+ |
1.5.7 | 4.3.11 | 7 | 3.2+ |
1.5.8 | 4.3.12 | 7 | 3.2+ |
1.5.9 | 4.3.13 | 7 | 3.2+ |
2.0.0 | 5.0.2 | 8 | 3.2+ |
至此,配置就算完成了。
脱坑过程中参考的文章:
https://blog.csdn.net/wj197927/article/details/79563081
https://blog.csdn.net/jarniyy/article/details/80500651
https://blog.csdn.net/qq_14853889/article/details/80026885