springboot打war包后部署到tomcat后访问返回404错误

Posted 夏振兴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot打war包后部署到tomcat后访问返回404错误相关的知识,希望对你有一定的参考价值。

springboot打war包后部署到tomcat后访问返回404错误

1、正常情况下,修改打包方式为war

<packaging>war</packaging>

 


2、启动类继承SpringBootServletInitializer,重写configure方法

@SpringBootApplication
public class SmallProgramApplication extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SmallProgramApplication.class);
}

public static void main(String[] args) {
SpringApplication.run(SmallProgramApplication.class, args);
}
}

 

 

 

 

 

 

 

我因为添加了servlet,在启动类实现了ServletContextInitializer,并重写了onStartup方法,把servlet加进来

@SpringBootApplication
public class SmallProgramApplication extends SpringBootServletInitializer implements ServletContextInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SmallProgramApplication.class);
}

@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.addServlet(WeiXinServlet.class.getSimpleName(),new WeiXinServlet())//
.addMapping("/wx");
}

public static void main(String[] args) {
SpringApplication.run(SmallProgramApplication.class, args);
}
}

 

 

 

 

 

 

 

 



结果是:在idea启动访问正常,打war包后,tomcat启动正常,但看不到springboot启动日志,能访问servlet,但不能访问controller
我个人判断出现这种原因的可能是:
重写onStartup方法,将SpringBootServletInitializer中的springboot的onStartup方法覆盖,所以导致springboot没有成功启动。

因为这个坑了很久,所以记录下来。


































以上是关于springboot打war包后部署到tomcat后访问返回404错误的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot——SpringBoot打war包并部署到Tomcat

springboot项目打war包,并部署到tomcat

SpringBoot打war包并部署到tomcat下运行

springboot项目打成war后部署到tomcat,Tomcat启动时spring boot未加载

使用idea将Springboot项目打war包部署到tomcat服务器上运行步骤详解

SpringBoot应用War包形式部署到外部Tomcat