概述
smart-servlet 是一个基于 Jakarta Servlet 6.1 的轻量级 Servlet 容器,适用于 Java 17+ 环境。
开源仓库:
目标用户:
- 有着 信创需求 的企业用户。
- 对服务并发能力要求高的企业用户。
- 对技术有着强烈热爱的个人开发者。
功能指引
这是一种面向 War 包部署方式提供的解决方案。
文件夹smart-servlet-bin-${version} 主目录
文件夹bin
- start.sh linux 环境下的启动脚本
- start.bat windows 环境下的启动脚本
文件夹conf
- License.shield 企业授权证书
- smart-servlet.properties 服务配置文件
- smart-servlet.pem SSL 证书
文件夹lib/ smart-servlet 依赖包
- …
文件夹webapps 部署 war 包的目录
- .war
- README.md
用过 springboot 的 spring-boot-starter-tomcat 或者 spring-boot-starter-undertow 的朋友应该对此不陌生。
smart-servlet-spring-boot-starter 本质上就是 smart-servlet 对 spring-boot-starter-web 的另一种适配。
只需按照以下方式调整 springboot 工程中 pom.xml 文件的配置,便可将 springboot 的默认 Servlet 容器替换成 smart-servlet。
这是一种类似:tomcat-maven-plugin
的使用方式,通常应用于 Java Web 工程的本地开发环境。
集成该插件只需在 pom.xml 中加入以下代码,便可以在 IDE 中启动 servlet 服务。
插件的版本建议采用最新版本,另外主要的配置项包括:
- port:servlet服务启动的监听端口
- path:Servlet容器上下文路径,即 ContextPath,通常以
/
表示。当然也支持自定义,但必须以/
开头
完成配置后在控制台输入:mvn package smart-servlet:run
即可。
产品对比
测试场景:
以工程中的 springboot-demo 模块为压测用例,压测工具为 wrk,1024个并发持续15秒。
产品名称 | smart-servlet | Tomcat | Undertow |
---|---|---|---|
初始Heap内存 | 12MB | 15MB | 15MB |
初始Metaspace | 29MB | 30MB | 30MB |
压测 QPS | 42W/s | 10W/s | 40W/s |
压测Heap峰值 | 400MB | 550MB | 750MB |
结论 | 性能高、内存低 | 性能弱、内存中等 | 性能高、内存高 |