大公司为什么禁止SpringBoot项目使用Tomcat?

VSole2022-07-09 17:53:54

同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?本文将为大家细细讲解。

# SpringBoot中的Tomcat容器

SpringBoot可以说是目前最火的Java Web框架了。它将开发者从繁重的xml解救了出来,让开发者在几分钟内就可以创建一个完整的Web服务,极大的提高了开发者的工作效率。Web容器技术是Web项目必不可少的组成部分,因为任Web项目都要借助容器技术来运行起来。

在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。

# SpringBoot设置Undertow

对于Tomcat技术,Java程序员应该都非常熟悉,它是Web应用最常用的容器技术。我们最早的开发的项目基本都是部署在Tomcat下运行,那除了Tomcat容器,SpringBoot中我们还可以使用什么容器技术呢?

没错,就是题目中的Undertow容器技术。SrpingBoot已经完全继承了Undertow技术,我们只需要引入Undertow的依赖即可,如下图所示。

配置好以后,我们启动应用程序,发现容器已经替换为Undertow。

那我们为什么需要替换Tomcat为Undertow技术呢?

# Tomcat与Undertow的优劣对比

Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。

但是,Tomcat和ApacheHTTP服务器不是一个东西,ApacheHTTP服务器是用C语言实现的HTTP Web服务器。Tomcat是完全免费的,深受开发者的喜爱。

Undertow是Red Hat公司的开源产品, 它完全采用Java语言开发,是一款灵活的高性能Web服务器,支持阻塞IO和非阻塞IO。由于Undertow采用Java语言开发,可以直接嵌入到Java项目中使用。同时, Undertow完全支持Servlet和Web Socket,在高并发情况下表现非常出色。

我们在相同机器配置下压测Tomcat和Undertow,得到的测试结果如下所示:

QPS测试结果对比:

Tomcat

Undertow

内存使用对比:

Tomcat

Undertow

通过测试发现,在高并发系统中,Tomcat相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。并且Undertow新版本默认使用持久连接,这将会进一步提高它的并发吞吐能力。所以,如果是高并发的业务系统,Undertow是最佳选择。

# 最后

SpingBoot中我们既可以使用Tomcat作为Http服务,也可以用Undertow来代替。Undertow在高并发业务场景中,性能优于Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下Undertow,你会发现你的系统性能会得到很大的提升。

容器undertow
本作品采用《CC 协议》,转载必须注明作者和本文链接
没错,就是题目中的Undertow容器技术。配置好以后,我们启动应用程序,发现容器已经替换为Undertow
一、异步执行 实现方式二种: 使用异步注解@aysnc、启动类:添加@EnableAsync注解 JDK 8本身有一个非常好用的Future类——CompletableFuture
我们可以通过获取到 BeanFactory 篡改 BeanDefinitions 中的 beanClass 类型为自定义类型 以及 scope 作用域为”prototype”,然后调用 getBean 方法, Spring将实例化一个我们定义的类型对象并返回达到实例化任意对象的效果。这里的思路是实例化JDK中的 Nashorn 脚本引擎工厂,接着调用 getScriptEngine 获取 Nashorn 引擎实例,再调用 eval 方法来执行脚本。寻找 BeanDefinition 时,只需要注意构造方法的参数即可,例如 Nashorn 脚本引擎工厂为无参构造方法。其中名为 的 BeanDefinition 是符合这个条件的。
在渗透测试过程中,我们的起始攻击点可能在一台虚拟机里或是一个Docker环境里,甚至可能是在K8s集群环境的一个pod里,我们应该如何快速判断当前是否在容器环境中运行呢?当然,以上这两种都是比较主观的判断。接下来,我们再来盘点下比较常用的几种检测方式。
边缘计算场景中由于节点带宽受限,采用现有架构部署传统的标准容器镜像效果不佳,为此我们提出了一种面向边缘计算的容器镜像构建方法。
在安全实践不佳或违反安全规则的情况下,很多人可以访问容器。每当容器的通信权限超过严格要求时,它可能会导致额外的安全风险。虽然这类工具帮助工程师实现DevOps管道所需的效率,但它们很难保证所需要的安全性。因此,应该考虑尽量避免使用特权容器。此外,需要充分利用帮助不断检查映像内容查找已知漏洞,并报告安全问题的功能。首先,建议企业使用针对特定容器的主机操作系统,因为它们没
本文介绍了在集群中利用危险的RBAC配置提权至集群管理员的案例,并总结了同类的技术和方法和对应的防御思路
容器安全技术面向容器环境,提供针对容器“构建-分发-运行”全生命周期的安全防护,对容器环境、容器平台、容器编排引擎等场景提供全方位的安全防护体系,为云计算、虚拟化场景下的容器化业务和应用系统提供安全保障。
harbor2.5版本开始支持cosign做镜像签名,本周实践了一下, ubuntu20.04.4,安装docker,sudo apt install docker.io, sudo systemctl enable docker, sudo gpasswd -a ubuntu docker, newgrp docker, 安装docker-compose,sudo apt instal
VSole
网络安全专家