SpringBoot使用外置tomcat容器部署

springboot默认内嵌有tomcat,所以可以不依赖外部的tomcat容器,直接打成jar包,运行即可。但实际开发中更多的可能需要多个项目使用同一个tomcat容器,此时,需要将springboot项目打为war包而不再是jar包。springboot提供了以下步骤来做修改。
本文使用gradle作为springboot的构建工具。

1. 修改项目的启动类

1. 启动类继承SpringBootServletInitializer
2. 重写configure方法
3. 在入口函数中启动项目
@SpringBootApplication
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(ServletInitializer.class);
    }

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

}

2. gradle中配置打为war包

apply plugin: 'war'

3. provided方式依赖内置的tomcat

provided('org.springframework.boot:spring-boot-starter-tomcat')

以上3步,即可完成打为war包。

注意事项

我在打完war包部署到服务器后,发现并不能正常访问借口拿到数据,所有接口会报404的错误。原因是请求前缀的问题,在springboot中,可以手动配置请求前缀,不会受打包包名的影响,但在在外置tomcat容器中,请求的项目路径是会受到打包的包名影响的,例如在springboot中配置前缀为[[snowson]],则请求的url为

http://域名/snowson/具体接口

无论打包的包名是什么。而在外置tomcat中,若打包报名为snowson_main,正确的访问路径为

http://域名/snowson_main/具体接口

所以,最好是打出预期接口路径的报名,避免不必要的错误。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容