Spring Boot应用部署 - Tomcat容器替换为Jetty容器

Jetty和Tomcat容器对比

Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。

  • Jetty更轻量级。这是相对Tomcat而言的。

  • Jetty更灵活。

  • Jetty更满足公有云的分布式环境的需求,而Tomcat更符合企业级环境。

Tomcat容器替换为Jetty容器

要在Spring Boot应用中将默认的Tomcat容器替换为Jetty容器,可以按照以下步骤进行操作:

修改Maven依赖

  1. 排除Tomcat依赖:首先,你需要在pom.xml文件中的spring-boot-starter-web依赖里排除Tomcat。这可以通过<exclusions>标签实现。

    <dependencies><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>
    </dependencies>
    
  2. 添加Jetty依赖:接下来,在pom.xml中添加Jetty的起步依赖。

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>
    

配置文件调整(可选)

虽然通常情况下仅上述步骤就足够了,但如果你需要对Jetty进行额外的配置,可以在application.properties中添加相应的配置项。例如,调整端口:

server.port=8081

重新构建和运行

完成上述修改后,确保重新构建你的项目,以便Maven下载新的依赖并更新你的应用配置。如果你使用IDE,通常可以通过清理(Clean)和重建(Build)项目来实现这一点。之后,当你再次运行你的Spring Boot应用时,它将会使用Jetty作为Web容器而非Tomcat。

由于实际日志内容会根据你的具体环境(如Spring Boot版本、Jetty版本、具体应用配置等)有所不同,我将提供一个简化的示例来说明Spring Boot应用使用Jetty启动时可能出现的日志输出。请注意,下面的示例是基于文本描述性构造的,并非直接来自某个特定运行实例。

:: Spring Boot ::                (v2.6.3)2023-04-09T10:30:45.00+08:00 INFO [main] org.springframework.boot.StartupInfoLogger - Starting application using Java 11.0.13 on DESKTOP-XXXXXX with PID 12344 (C:\workspace\myapp\target\classes started by UserName in C:\workspace\myapp)
2023-04-09T10:30:45.23+08:00 DEBUG [main] org.springframework.boot.logging.ClasspathLoggingApplicationListener - Application failed to start with classpath: [file:/C:/workspace/myapp/target/classes/, ...]2023-04-09T10:30:46.54+08:00 INFO [main] org.springframework.boot.web.embedded.jetty.JettyWebServer - Starting Jetty web server...
2023-04-09T10:30:46.75+08:00 INFO [main] org.eclipse.jetty.util.log - Logging initialized @139ms to org.eclipse.jetty.util.log.Slf4jLog
2023-04-09T10:30:46.90+08:00 INFO [main] org.eclipse.jetty.server.Server - jetty-9.4.44.v20210927; built: 2021-09-27T11:06:34.143Z; git: 4a1c13d268d4dfe655fb413a2f4aabb09bb33357; jvm 11.0.13+8
2023-04-09T10:30:46.92+08:00 INFO [main] org.eclipse.jetty.server.handler.ContextHandler - Started o.s.b.w.e.j.JettyEmbeddedWebAppContext@764973b: http://0.0.0.0:8080/
2023-04-09T10:30:47.02+08:00 INFO [main] org.eclipse.jetty.server.Server - Started Server@7e2f09d in 2037ms2023-04-09T10:30:47.03+08:00 INFO [main] org.springframework.boot.StartupInfoLogger - Started application in 2.49 seconds (JVM running for 3.266)

这段示例日志展示了Spring Boot应用启动的几个关键步骤,包括Spring Boot的启动信息、Jetty服务器的初始化、以及最终的成功启动消息,包括绑定的端口(在这个例子中是8080)。请注意,日期时间戳、PID、用户名、路径、版本号等信息会根据实际情况有所不同。

注意事项

  • 确保你的Spring Boot版本与Jetty起步依赖兼容。
  • 如果在切换过程中遇到任何编译或运行时错误,检查是否有与Tomcat特定功能相关的代码或配置需要调整。
  • 考虑到Jetty和Tomcat在处理静态资源、长连接、以及并发请求等方面的差异,根据你的应用场景选择合适的容器。

以上步骤应该能帮助你成功地将Spring Boot应用中的Tomcat容器替换为Jetty容器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/6676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初始面相对象

初始面向对象 类和对象的关系 类&#xff1a;对对象向上抽取出像的部分、公共的部分以此形成类&#xff0c;类就相当于一个模版。 对象&#xff1a;在某个模版下的具体的产物可以理解为对象&#xff0c;对象就是一个一个具体的实例&#xff0c;就相当于这个模版下具体的产品&…

RabbitMQ之生产批量发送

为什么要用生产批量发送&#xff1f; 批量发送消息&#xff0c;可以提高MQ发送性能。但是 RabbitMQ 并没有提供了批量发送消息的 API 接口,使用 spring-amqp 的 BatchingRabbitTemplate 实现批量能力。 SimpleBatchingStrategy 发送策略满足以下规则会进行发送&#xff1a; ba…

学习【Java反射】这一篇就够了

反射 1. 什么是反射2. 反射的原理3. 使用案例4. 应用场景 1. 什么是反射 Java反射是指在运行时动态地获取类的信息&#xff0c;并可以通过该信息来操作类或对象。 通过反射&#xff0c;我们可以在运行时获取类的字段、方法、构造函数等信息&#xff0c;并能够动态地创建对象、…

JAVA基础JSP之JavaBean模式

JavaBean模式 1 JavaBean简介及设计原则 【JavaBean简介】符合某种特定的规范的Java类&#xff0c;使用Javabean的好处是解决代码重复编写&#xff0c;减少代码冗余&#xff0c;功能区分明确&#xff0c;提高了代码的维护性。[S1] 1.for循环 2.jdbc中的dao模式 【Javabean…

微信小程序进阶之路:项目管理与分包加载实战指南

微信小程序进阶之路&#xff1a;项目管理与分包加载实战指南 在微信小程序的开发海洋中&#xff0c;随着项目的日益复杂&#xff0c;如何高效管理项目结构和优化加载性能成为每位开发者必修课。本文专为“小白”开发者设计&#xff0c;将深入浅出地讲解项目管理的基本概念、分…

梅大(龙)高速周边地形

最近广东高速的事故很受关注&#xff0c;我下载了这个高速的地形数据。查看了一下高速周围的地形情况。确实地形很险要&#xff0c;开车还是不要太快&#xff01;尤其南方的路基不稳&#xff01;这样险要的地形很危险&#xff01; 高速周围的地形情况 梅大&#xff08;龙&…

eNSP-动态路由(ospf协议)

一、拓扑结构搭建 二、主机配置 pc1 pc2 三、路由器配置 1.AR2配置 <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进入接口 [Huawei-GigabitEthernet0/0/0]ip address 192.168.0.2 24 #设置ip地址 [Huawei-GigabitEthernet0/0/0]q #返回上一级 [Huawei]int g0/0/1 …

关于 Vue.js 双向数据绑定基本实现认知

写在前面 很早的一篇博客&#xff0c;整理了部分&#xff0c;蹭假期整理完博文内容涉及:双向数据绑定 实现方式简单介绍基于发布订阅、数据劫持的双向数据绑定两种不同实现(ES5/ES6) Demo&#xff0c;以及代码简单分析Object.defineProperty && Proxy API 介绍以及特性…

rknn adb shell error: closed

博主的答案&#xff1a; 【Android测试】adb shell回车后出现 error closed的解决办法-CSDN博客 第1种&#xff1a;重启电脑&#xff0c;之后把手机查到电脑上&#xff0c;启动idea 第2种&#xff1a;手机-设置-应用程序-开发-usb调试打开再关闭一次 第3种&#xff1a;重启手…

Libcity笔记:原子文件

1 介绍 Libcity中的数据以原子文件的形式存在 2 原子文件类别 对于不同的交通预测任务&#xff0c;可能用到不同的原子文件&#xff0c;同一个数据集不一定包含全部六种原子文件 网格数据需要按照先行后列的顺序遍历OD数据需要按照先起点后终点的顺序遍历 2.1 geo 存储地理…

opengauss概述-基础知识篇-备考华为高斯

目录 &#x1f9e8;考前准备: &#x1f3a1;数据库操作语言 ✨OLTP和OLAP &#x1f3af;常用函数 &#x1f9f2;字符处理函数 关于 left 和 right 特别重点的字符串函数 &#x1f9f2;数字操作函数 关于 ceil 和 floor &#x1f9f2;时间和日期处理函数 &#x1f9f…

redis保存数据的结构-redisobject结构体

在redis中&#xff0c;所有键值对的保存&#xff0c;都是机遇redisboject的一个结构体&#xff0c;如下 typedef struct redisObject {unsigned type:4; unsigned encoding:4; unsigned lru:LRU_BITS; int refcount; void *ptr; …

美团面试(一面)

前言 给位小伙伴好&#xff0c;这里呢&#xff0c;分享一下最近一次美团的面试的面经&#xff0c;自己把面试的大多数内容通过博客的形式记录了下来&#xff0c;希望对各位有所帮助哦~ 一、项目篇 1、**对于自己的点餐小程序数据库表是怎么设计的 2、对于多个人下订单的问题…

Java---类和方法的再研究

上一篇主要介绍了面向对象的思想以及内存实现&#xff0c;关于类与对象感觉写的不够好&#xff0c;因此才会有这一篇作为补充&#xff1b; 一&#xff1a;类与对象 &#xff08;1&#xff09;类 一些相同属性和行为的事物的统称&#xff0c;比较广泛、抽象&#xff0c;比如…

专项技能训练五《云计算网络技术与应用》实训7-1:安装mininet

文章目录 mininet安装1. 按6-1教程安装opendaylight控制器。2. 按6-2教程安装RYU控制器。3. 按5-1教程安装openvswitch虚拟交换机并开启服务。4. 将老师所给mininet安装包试用winSCP传送至电脑端。5. 安装net-tools。6. 安装mininet7. 安装完成后&#xff0c;使用命令建立拓扑&…

C#基础之选择排序

选择排序 文章目录 选择排序1、概念2、代码实现 1、概念 1、新建一个下标 int index 0; 2、依次比较 3、找出极值 arr[index] < arr[n] 4、放入目标 //数组长度-1-n轮从第0轮开始 5、比较n轮2、代码实现 int[] arr new int[]{8,7,1,5,4,2,6,3,9}; 第一步 声明索引0&…

Python实战开发及案例分析(7)—— 排序算法

排序算法是计算机科学中的基础&#xff0c;用于将数据元素按照特定的顺序排列。Python 提供了多种方式来实现排序算法&#xff0c;包括内置的排序函数和手动实现各种经典排序算法。 Python 内置排序函数 Python 的内置函数 sorted() 和列表的 sort() 方法提供了高效的排序功能…

什么?你用service调controller,那参数校验怎么办?

你好&#xff0c;我是柳岸花开。 你有没有遇到过用service调controller的场景&#xff1f;我司公有云用的微服务架构&#xff0c;私有云则用的合并完的微服务架构——一个单体&#xff0c;这就涉及到用service调controller&#xff0c;这个明显的问题是参数校验会失效&#xff…

【网络安全产品】---应用防火墙(WAF)

what Web应用防火墙&#xff08;Web Application Firewall) WAF可对网站或者App的业务流量进行恶意特征识别及防护&#xff0c;在对流量清洗和过滤后&#xff0c;将正常、安全的流量返回给服务器&#xff0c;避免网站服务器被恶意入侵导致性能异常等问题&#xff0c;从而保障…

快速了解Django:核心概念解析与实践指南

title: 快速了解Django&#xff1a;核心概念解析与实践指南 date: 2024/5/1 20:31:41 updated: 2024/5/1 20:31:41 categories: 后端开发 tags: Django核心路由系统视图系统ORM管理中间件Web框架登录装饰器 第一章&#xff1a;Django简介 背景和发展历程&#xff1a; Djan…