springboot2.0项目发布外部tomcat7 踩过的一些坑
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://www.geek-share.com/detail/2732076585.html
https://blog.csdn.net/jarniyy/article/details/80500651
https://blog.csdn.net/qq_14853889/article/details/80026885
- SpringBoot项目打包发布到外部tomcat时,出现各种异常的解决fang
- spring boot 项目发布到外部tomcat的关键步骤
- intellij下将springboot项目打成war包发布到远程tomcat服务器上
- spring-boot项目在外部tomcat环境下部署
- springboot项目解决外部tomcat通过ip+端口访问项目
- spring_boot 发布成war包 ,部署到外部的tomcat
- SpringBoot之——发布到外部Tomcat
- springBoot项目打jar包发布时启动包内置tomcat无法启动错误分析
- Springboot项目部署到外部Tomcat
- 把spring boot项目发布tomcat容器(包含发布到tomcat6的方法)
- springBoot项目引入外部Tomcat时,启动Tomcat报错
- spring boot发布war包,部署到外部tomcat服务器
- Springboot项目部署到外部Tomcat
- SpringBoot 创建web项目并部署到外部Tomcat
- MyEclipse发布Springboot项目到MyEclipse配置的Tomcat中
- spring boot 打包发布到外部tomcat 运行--操作手册
- 如何将Spring Boot项目打包部署到外部Tomcat
- spring boot web项目部署到外部tomcat
- spring_boot 发布成war包 ,部署到外部的tomcat
- spring_boot 发布成war包 ,部署到外部的tomcat