Spring Boot 部署到 Tomcat7 上的兼容性问题

2019-05-13  本文已影响0人  TomJones

小白个人心得,大佬勿喷

我:”我要用spring boot搭一个小工具,已经可以用内嵌tomcat启动了“

现实:”搭好了放在服务器上吧,服务器是tomcat7,spring boot内嵌的tomcat版本是8.0以上吧,解决一下包冲突问题“

我:。。。。。网上查了n久,陷入了一个个坑,太菜了2333手动哭泣,终于得到步骤如下

一:<packaging>war</packaging>在pom文件中申明打成war包,因为war包放在tomcat中的webapps会被直接解析

二:因为要用外部的tomcat7,那么内嵌的tomcat8就得剔除,得专一不是,不能家里红旗不倒,外面彩旗飘飘

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-tomcat</artifactId>

    <scope>provided</scope> ##这个就是表示tomcat只在编译和测试时候使用

</dependency>

三:使用外部的tomcat,那么就要继承SpringBootServletInitializer并重写它的方法

public class RqaFinalApplication extends SpringBootServletInitializer {

 @Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){

    return builder.sources(RqaFinalApplication.class);

 }

  public static void main(String[] args) {

SpringApplication.run(RqaFinalApplication.class, args);

  }

}

其实以上三点都在网上能够轻易找到,网上介绍的一些方法是诸如剔除servlet-api等方式,但是我自己试了,都不奏效,报错javax.el-api-3.0.0.jar not loaded,所以第四点属于个人解决方式:

四:在tomcat7中有el-api.jar,但并不支持spring boot,在tomcat的lib文件夹下加入自己下载的javax.el-api-3.0.0.jar即可,之后把打好的war包放在webapps目录下,就能够成功运行了,并不会给tomcat7带来麻烦

小白言论,仅供参考

上一篇下一篇

猜你喜欢

热点阅读