0x01. 概述

SpringBoot平时我们用的爽歪歪,爽到它自己连Tomcat都自集成了,我们可以直接编写SBT启动类,然后一键开启内置的Tomcat容器服务,确实是很好上手。但考虑到实际的情形中,我们的Tomcat服务器一般是另外部署好了的,有专门的维护方式。此时我们需要剥离掉SBT应用内置的Tomcat服务器,进而将应用发布并部署到外置的Tomcat容器之中,本文就实践一下这个。

0x02. 修改打包方式

修改项目的pom.xml配置,我们修改其打包方式为war方式,如:

<groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging>

0x03. 移除SBT自带的嵌入式Tomcat

修改pom.xml,从maven的pom中移除springboot自带的的嵌入式tomcat插件

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId>    <!-- 移除嵌入式tomcat插件 -->    <exclusions>        <exclusion>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-tomcat</artifactId>        </exclusion>    </exclusions></dependency>

0x04. 添加servlet-api依赖

修改pom.xml,在maven的pom中添加servlet-api的依赖

<dependency>    <groupId>javax.servlet</groupId>    <artifactId>javax.servlet-api</artifactId>    <version>3.1.0</version>    <scope>provided</scope></dependency>

0x05. 修改启动类,并重写初始化方法

在SpringBoot中我们平常用main方法启动的方式,都有一个SpringBootApplication的启动类,类似代码如下:

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

而我们现在需要类似于web.xml的配置方式来启动spring应用,为此,我们在Application类的同级添加一个SpringBootStartApplication类,其代码如下:

// 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法public class SpringBootStartApplication extends SpringBootServletInitializer {    @Override    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {        // 注意这里一定要指向原先用main方法执行的Application启动类        return builder.sources(Application.class);    }}

0x06. 部署到外部的Tomcat容器并验证

  • 在项目根目录下(即包含 pom.xml的目录)记性maven打包操作:

    mvn clean package

等待打包完成,出现 [INFO]BUILD SUCCESS 即为打包成功

  • 然后我们把 target目录下生成的 war包放到tomcat的 webapps目录下,启动tomcat,即可自动解压部署。

最后在浏览器中验证:

http://YOUR_IP:[端口号]/[打包项目名]

  • 也可以直接将项目命名为ROOT,这样访问根目录即可访问tomcat中的SpringBoot应用
    http://YOUR_IP:[端口号]


0x07. 后记

如果有兴趣,也可以抽点时间看看作者一些关于容器化、微服务化方面的文章:

  • RPC框架实践之:Apache Thrift

  • 微服务调用链追踪中心搭建

  • 利用K8S技术栈打造个人私有云连载文章

  • Docker容器可视化监控中心搭建

  • 利用ELK搭建Docker容器化应用日志中心

  • Spring Boot应用监控实战

作者更多 务实、能看懂、可复现的 原创文章尽在公众号 CodeShep,欢迎订阅!

您也可以点击下方“阅读原文”来获得更好的阅读体验

⬇️⬇️⬇️

©著作权归作者所有:来自51CTO博客作者mb5fdcae83766b7的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. JavaWeb-LayUI框架的介绍与使用方式(前端框架篇)
  2. 【前端词典】4 (+1)种滚动吸顶实现方式的比较[性能升级版]
  3. 【前端词典】4 种滚动吸顶实现方式的比较
  4. Python常用的数据存储方式有哪些?五种!
  5. python入门教程12-05 (python语法入门之创建进程的多种方式)
  6. 监控流媒体服务器连接监控摄像头的配置方式 - GB28181和ONVIF
  7. 在模仿中精进数据可视化03:OD数据的特殊可视化方式
  8. 新版本chrome 浏览器非受信https站点访问方式
  9. 对容器镜像的思考和讨论

随机推荐

  1. Activity启动模式设置(堆栈中的生存时间)
  2. Android学习目录
  3. Android 学习成品
  4. android点击文本框之外的地方隐藏键盘
  5. Android设置振铃
  6. Android(安卓)图片的加载与保存
  7. 改变Android中默认Dialog的样式
  8. android 2.2 eclipse
  9. Android开发实践 网络通信 URL、URLConne
  10. android editText 软键盘enter键图标的设