关键词搜索

源码搜索 ×
×

spring boot项目发布war包部署到tomcat

发布2019-08-04浏览2531次

详情内容

我有个spring boot项目,在intellij idea里运行得好地地,结果发布成war包,部署到tomcat里,报404,死活无法访问。

原因是,代码还少了点东西。在项目的启动类里,需要重载SpringBootServletInitializer.configure。原因是spring boot默认情况下使用了嵌入容器,支持项目的运行。但发布成war包,扔到tomcat里,就没有这个天然支持了,需要在代码里显式使用?

/**
 * 默认情况下是自带的嵌入式容器,如果需要构建war文件并进行部署时
 * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
 * 打成war包放到tomcat中启动必须要这个类才行
 */
@SpringBootApplication
public class BattleManagerApplication extends SpringBootServletInitializer{
 
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(BattleManagerApplication.class);
	}
 
 	//原本我的代码只有这个方法,并无上面的重载。这个在开发环境里是没有问题的
	public static void main(String[] args) {
		SpringApplication.run(BattleManagerApplication.class, args);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

参考文章:
Spring Boot修改启动类

开始时我以为是发布WAR包不得法,但其实发布过程没有问题:
在这里插入图片描述
在这里插入图片描述

补充说明:
发布成war包,我感觉是一个升华的过程,迫使我们的代码变得严谨。比如,含有汉字内容的文件,必须显式指定字符编码读取;URL中的大小写问题;URL的相对路径问题,等等,这些在开发环境中都不是事,结果发布成WAR包以后,放到服务器一跑,就到处报错,到处漏水了。只能一一修正。但是,修正了之后,就让人放心多了。

另外,发布成war包再部署到服务器比较繁琐,以此来发现问题,一来一回,太耗时。可以在开发环境中用tomcat来跑:

参考拙作:
intellij idea 应用 tomcat 等

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载