SpringBoot项目打包发布到外部tomcat遇到的问题怎么解决-创新互联

这篇文章主要介绍“SpringBoot项目打包发布到外部tomcat遇到的问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot项目打包发布到外部tomcat遇到的问题怎么解决”文章能帮助大家解决问题。

丹凤ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

先说遇到问题的情景:

初次尝试使用spring boot框架写了个小web项目,在Intellij IDEA中能正常启动运行。使用maven 运行install,生成war包,发布到本机的tomcat下,出现异常,主要的异常信息是  .......LifeCycleException。经各种搜索,找到答案。

spring boot因为内嵌tomcat容器,所以可以通过打包为jar包的方法将项目发布,但是如何将spring boot项目打包成可发布到tomcat中的war包项目呢?

1. 既然需要打包成war包项目,首先需要在pom.xml文件中修改打包类型,将spring boot默认的jar修改为war形式;

2. 其次spring boot的web项目中内嵌tomcat服务器,所以如果我们想要发布war包到tomcat项目,要讲spring boot中内嵌的tomcat包依赖排除,不然产生冲突,打开下面代码中的注释即可。


  org.springframework.boot
  spring-boot-starter-web
  

有一点想说的是,如果本地开发的时候依然想要使用spring boot内嵌tomcat进行调试,添加如下依赖即可;


  org.springframework.boot
  spring-boot-starter-tomcat
  provided

3. spring boot发布jar包web程序的入口是main函数所在的类,使用@SpringBootApplication注解。但是如果war包发布至tomcat,需要增加 SpringBootServletInitializer 子类,并覆盖它的 configure 方法,或者直接将main函数所在的类继承 SpringBootServletInitializer 子类,并覆盖它的 configure 方法。代码举例如下,

@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
   
  @Override
  protected SpringApplicationBuilder configure(
      SpringApplicationBuilder application) {
    return application.sources(DemoApplication.class);
  }
 
   
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}

以上就完成了spring boot项目打包war包的所有步骤,可以发布至tomcat7及其以上版本。

最后还有最重要的一点,如果你本机的tomcat版本和  springboot自动集成的8.0版本不一致。也会出问题,解决办法 :

我本地的Tomcat版本是8.0.28, 而服务器上的Tomcat是7.0.69。 我在本地下了个Tomcat7.0.70部署也报同样错误。更加确定问题跟Tomcat版本有关。经过多方查找资料,最后在Stackoverflow上看到一个老外说SpringBoot默认Servlet容器是基于Tomcat8的

在打好的war包中确实发现了Tomcat相关jar包,而且是Tomcat8的,拿Tomcat8的embed包在Tomcat7下面那肯定是不能用啊

SpringBoot项目打包发布到外部tomcat遇到的问题怎么解决

要支持低版本Tomcat需要在maven中指定Tomat版本,配置如下:


  7.0.69

然后依赖中加上(这个其实不加也行, 官方文档是加上的)


  org.apache.tomcat
  tomcat-juli
  ${tomcat.version}

加上以后试了下,果然是没问题了。看了下war包中的lib目录,确实已经变成Tomcat7的包了

SpringBoot项目打包发布到外部tomcat遇到的问题怎么解决

但是我还是有点疑惑, 这样配置打成包岂不是换个Tomcat版本就要重新打次包? 既然是由于SpringBoot内部的Servlet容器造成了这个限制, 那我不用行不行? 又查了很多资料, 还真有办法!



  org.springframework.boot
  spring-boot-starter-tomcat
  provided

关于“SpringBoot项目打包发布到外部tomcat遇到的问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。


名称栏目:SpringBoot项目打包发布到外部tomcat遇到的问题怎么解决-创新互联
文章起源:http://bzwzjz.com/article/ccjgpd.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都营销网站制作 手机网站制作 成都网站制作 成都网站建设 网站设计公司 营销型网站建设 企业网站建设公司 高端品牌网站建设 成都网站设计 成都网站设计 成都网站制作 广安网站设计 成都网站建设公司 成都网站设计 成都网站制作 网站制作报价 四川成都网站设计 外贸营销网站建设 成都网站建设 定制网站建设多少钱 手机网站制作 H5网站制作