Springboot项目打war包部署到外置tomcat容器【详解版】

2023-11-01

一、修改打包方式


<packaging>war</packaging>

将上面的代码加入到pom.xml文件刚开始的位置,如下:

二、 排除内置tomcat的依赖


我们使用外置的tomcat,自然要将内置的嵌入式tomcat的相关jar排除。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency>

三、新增加一个类继承SpringBootServletInitializer实现configure:


为什么继承该类,SpringBootServletInitializer源码注释:

Note that a WebApplicationInitializer is only needed if you are building a war file and deploying it.

If you prefer to run an embedded web server then you won't need this at all.

注意,如果您正在构建WAR文件并部署它,则需要WebApplicationInitializer。如果你喜欢运行一个嵌入式Web服务器,那么你根本不需要这个。

public class ServletInitializer extends SpringBootServletInitializer{ 
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){//此处的Application.class为带有@SpringBootApplication注解的启动类return builder.sources(BootLaunchApplication.class);}}
注意事项:
使用外部Tomcat部署访问的时候,application.properties(或者application.yml)中的如下配置将失效,请使用外置的tomcat的端口,tomcat的webapps下项目名进行访问。
server.port=
server.servlet.context-path=

四、build要有finalName标签


pom.xml中的构建build代码段,要有应用最终构建打包的名称。

<finalName>boot-launch</finalName>

五、打包与运行


war方式打包,打包结果将存储在项目的target目录下面。

mvn clean package -Dmaven.test.skip=true

然后将war包copy到外置Tomcat webapps目录里面。在外置tomcat中运行:${Tomcat_home}/bin/目录下执行startup.bat(windows)或者startup.sh(linux),然后通过浏览器访问应用,测试效果。

需要注意的是

  • jsp静态资源引用也必须是:/boot-launch/image/xxxx.png,不能是/image/xxxx.png

  • JSP的war包中,webjars的资源使用方式不再被支持

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Springboot项目打war包部署到外置tomcat容器【详解版】 的相关文章

  • LoaderManager 不接受“这个”

    好吧 我投降 我想不明白 我正在学习 Udacity 的 Android 基础知识课程 需要了解如何使用加载器加载数据 但是 当我使用以下行时 this 以红色突出显示并显示以下错误 Wrong 3rd argument type Foun
  • Java 的 RSA 算法库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想为我的应用程序提供基于 RSA 算法的简单许可机制 有免费的 RSA 库吗 只需使用javax crypto and java sec
  • 如何从 JAXB 编组 XML 文件中删除 xmlns:xsi 和 xsi:type

    我有一组 JAXB 生成的类 其中一些类具有接受的 setter 方法 对象 作为参数 例如 XmlAccessorType XmlAccessType FIELD XmlType name Car propOrder defaultCar
  • android listviews:页眉和页脚视图

    在我的 ListActivity 中 我需要页眉和页脚视图 位于列表的顶部和底部 分别用作列表上的上一页和下一页按钮 因为我只想一次仅显示 20 个项目 我通过执行以下操作来设置头视图和脚视图 getListView addHeaderVi
  • 异步方法的默认 EJB 事务模式?

    当我有一个 AsynchronousEJB 中的方法 并且我没有指定 TransactionAttribute 那么容器到底是如何处理事务边界的呢 显然 它不能使用调用线程的事务 那么它是做什么的呢 同样的问题 但涉及由 TimerServ
  • 使用 Spring RestTemplate 时忽略 SSL 证书验证

    我正在使用 Spring RestTemplate 发出 HTTPS 请求 并且我想忽略 SSL 证书 这是我创建restTemplate请求的代码 TrustStrategy acceptingTrustStrategy X509Cert
  • 如何将多种语言设置放入单个 .clang-format 文件中

    我想为 java javascript 和 c 创建一个 clang 格式 我知道如何转储单一语言的示例配置 但不知道如何合并这 3 个配置文件 有关如何将多种语言配置放入单个文件中的示例 BasedOnStyle LLVM IndentW
  • Java 同步计数器 - get() 怎么样?

    众所周知这么简单x 不是原子操作 实际上是读 增量 写操作 这就是为什么它应该同步 但是关于get 我读过它也应该同步 但有人能解释一下为什么吗 通过引入来避免内存一致性错误happens before关系 当出现以下情况时该怎么办get
  • 使用ThreadPoolExecutor,allowCoreThreadTimeOut和零核心线程有什么区别?

    阅读以下文档线程池执行器 https docs oracle com javase 7 docs api java util concurrent ThreadPoolExecutor html 我很困惑以下示例用法之间的区别 零个核心线程
  • 基本的 Swing 库? JGoodies,JFreeChart [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何模拟类路径上属性文件的存在?

    这肯定是一个常见问题 我有一个像这样的属性文件my settings properties由应用程序类读取 当我编写测试类时 它需要测试可能存在的不同场景my settings properties为了确保最大的代码覆盖率 例如空属性文件
  • gRPC 客户端重新连接逻辑导致服务器端打开重复流

    我有一个使用两个双向流的 gRPC 客户端 由于目前未知的原因 当我们每小时发送一次 keepAlive ping 时 会出现 onError 并带有statusRuntimeException在两个流上都被调用 为了处理重新连接 我在 j
  • Hibernate:单表中的父/子关系

    我几乎没有看到任何关于以下与 Hibernate 相关问题的提示 这涉及使用具有父子关系的单个数据库表来实现继承 与自身的关系 例如 CREATE TABLE Employee empId BIGINT NOT NULL AUTO INCR
  • 使用三十、LocalDate 获取每月的第一天和最后一天

    我有一个 LocalDate 需要获取该月的第一天和最后一天 我怎么做 eg 13 2 2014我需要得到1 2 2014 and 28 2 2014 in 本地日期 https docs oracle com javase 8 docs
  • Android 折叠工具栏在折叠时没有隐藏其他元素

    我在 Android 上有一个布局 支持设计折叠工具栏 其中包含 TextView 但是当我折叠工具栏时 一些带有工具栏标题的 TextView 我想隐藏所有其他内容 而不是工具栏和标题 这是我的布局
  • 如何用 JSON 表示数据库中的图像

    我需要基于数据库中的 blob 创建 JSON 为了获取 blob 图像 我使用下面的代码并在 json 数组中显示之后 Statement s connection createStatement ResultSet r s execut
  • 在调用超类型构造函数之前无法引用“X”,其中 x 是最终变量

    考虑以下 Java 类声明 public class Test private final int defaultValue 10 private int var public Test this defaultValue lt Compi
  • 如何在 spring-ws 中解析 SoapFaultClientException

    我正在使用 spring ws 2 3 1 在为 Web 服务创建客户端时 有时我得到SoapFaultClientException像下面这样
  • 从邮件服务器读取发送的邮件

    我知道如何从 INBOX 文件夹中检索邮件 但现在我想从 SENT ITEMS 文件夹中检索邮件 我正在使用 imap 检索数据 让我知道我应该在此函数中传递什么参数才能从 SENT ITEMS 文件夹中获取邮件Folder folder
  • 根据 netbeans 中的单选按钮切换组件的“启用”属性

    我在按钮组中有两个单选按钮 在同一面板中我有一个文本框和一个按钮 我想仅在选择第二个按钮时启用文本框和按钮 并在选择另一个单选按钮时禁用文本框和按钮 我已经尝试过这个但没有成功 private void radio button2Actio

随机推荐

  • JS 循环发起请求

    写在前面 要求是等上一个请求完毕之后 再发起下一个请求 一般用不到 写的时候 发现forEach不行 得用for 注 我这里用setTimeOut与promise去模拟请求 步骤1 先写一个模拟请求的方法 function simulati
  • 配合小皮系统搭建Droabox靶场

    什么你还不会搭建 教你两招 无需使用命令行 即可搭建 一 将下载好的哆啦盒放进小皮系统的WWW目录下 二 启动小皮数据库 创建一个数据库 设置密码及用户 三 导入在哆啦盒文件下的pentest sql 四 打开刚刚放进小皮系统WWW目录下的
  • 前端若依框架路由跳转报错 Error: Cannot find module “@/views/xxx/xxx/xxx“

    前言 前端代码打包dist文件之后 部署后发现只有首页可以显现 然后跳转路由没生效 控制台报错 Error Cannot find module views xxx xxx xxx 原因 webpack4 不支持变量方式的动态 import
  • 十进制浮点数转成二进制(IEEE 754 在线计算器)

    IEEE 754 单精度浮点数转换 在线计算器 http www styb cn cms ieee 754 php 十进制小数的二进制表示 整数部分 除以2 取出余数 商继续除以2 直到得到0为止 将取出的余数逆序 小数部分 乘以2 然后取
  • [多尺度物体目标检测]技术概述/综述

    目录 1 绪论 1 1 引言 1 2 研究背景 1 3 研究意义 1 4 目前存在的问题 2 传统目标检测方法 2 1 HOG SVM 2 1 1 简介 2 1 2 检测流程 2 2 DPM 2 2 1 简介 2 2 2 检测流程 3 基于
  • C++拷贝构造器(Copy contructor)

    定义 由己存在的对象 创建新对象 也就是说新对象 不由构造器来构造 而是由拷贝构造器来完成 拷贝构造器的格式是固定的 class 类名 类名 const 类名 another 拷贝构造体 classA A const A another 规
  • 题目 1041: [编程入门]宏定义之找最大数

    分别用函数和带参的宏 从三个数中找出最大的数 输入格式 3个实数 输出格式 最大的数 输出两遍 先用函数 再用宏 保留3位小数 样例输入 复制 1 2 3 样例输出 复制 3 000 3 000 核心解法 我的是用三目运算符 int Max
  • feign的加解密封装

    功能描述 通过覆盖 feign codec Encoder 和 feign codec Decoder 实现 feign 请求的加解密操作 采用动态的 feignClient 调用 平台统一的通信加解密策略 同一个服务节点可以同时使用非加密
  • C++基础知识 - 类模板与静态数据成员

    类模板与静态数据成员 include
  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于AUTOSAR架构的AT控制系统研究与实现

    目录 前言 国内外研究现状 国外研究现状 国内研究现状 2 AUTOSAR规范及开发流程
  • vscode clang-format不生效

    问题 ubuntu下clang format不生效 解决方法 全局搜setting json 看着哪个像 找到对应的设置文件 我的是 config Code User settings json 里面改成 editor formatOnSa
  • Redis事务——锁机制

    1 redis事务定义 1 redis事务是一个单独隔离的操作 事务中所有操作都会按顺序进行执行 事务操作过程中 不会被其他客户端发送来到命令打断 2 redis事务是将命令进行串联操作 防止有其他命令插队 2 事务执行流程 如下图 1 m
  • Threadx 定时器timer

    文章目录 定时器管理结构 定时器链表 定时器激活链表 定时器工作原理 定时器API 定时器创建 tx timer create 删除定时器 tx timer delete 修改 tx timer change Threadx 操作系统定时器
  • 微信小程序wx.request请求服务器json数据并渲染到页面

    微信小程序的数据总不能写死吧 肯定是要结合数据库来做数据更新 而小程序数据主要是json数据格式 所以我们可以利用php操作数据库 把数据以json格式数据输出即可 现在给大家讲一下微信小程序的wx request请求服务器获取数据的用法
  • 有模型强化学习总结

    有模型和无模型的区别 1 有了模型 我们可以干哪些事呢 第一 利用模型和基于模型的优化算法 我们可以得到回报高的数据 也就是好的数据 有了好的数据 我们就可以对策略网络进行稳定的训练了 第二 有了模型 我们可以充分地利用示例 demonst
  • midjourney 初级使用说明

    注册 直达官网 目前官网是可以直达的 但是Midjourney目前架设在Discord频道上 最终运行去discord 上面的 需要科学上网 自行搜索 登录到Discord 以后 就是使用的开始 使用 找到新手频道 在midjourney官
  • JS特效-星空太空效果-极简

    今天早上心血来潮 看到自己的电脑桌面是太空的界面 便有心继上次星星海特效后的再一次制作
  • 【Docker】使用 Docker Registry 搭建自己的 Docker 镜像仓库

    使用 Docker Registry 搭建自己的 Docker 镜像仓库 在使用 Docker 进行应用程序的开发和部署时 使用 Docker 镜像仓库是一个很好的实践 它允许集中存储和管理 Docker 镜像 方便团队协作和版本控制 在本
  • wireshark 流量抓包例题重现

    题目一 题目要求 1 黑客攻击的第一个受害主机的网卡IP地址 2 黑客对URL的哪一个参数实施了SQL注入 3 第一个受害主机网站数据库的表前缀 加上下划线例如abc 4 第一个受害主机网站数据库的名字 看到题目SQL注入 那就首先过滤ht
  • Springboot项目打war包部署到外置tomcat容器【详解版】

    一 修改打包方式