Skip to content

SmartWeb 服务器与配置

选择服务器

SmartWeb 核心只定义 InternalWebServer。具体服务器模块通过配置提供默认实现:

模块实现类
SmartHTTPsmartweb.server.shttp.SmartHTTPServer
Undertowsmartweb.server.undertow.UndertowServer

默认实现由服务器模块写入 yu.web.server.default。应用可用 webServer.impl 覆盖。

默认服务器配置

properties
webServer.port=8080
webServer.cors=https://example.com
webServer.sessionNum=2000
webServer.allowMethod=GET,POST,PUT,DELETE,PATCH,OPTIONS,HEAD
# webServer.impl=fully.qualified.ServerClass
配置是否必需说明
webServer.port监听端口
webServer.corsCORS 来源配置
webServer.sessionNumSession 缓存容量,默认 2000
webServer.allowMethod允许的方法列表
webServer.impl覆盖服务器实现类

源码当前同时将 sessionNum 用作 Session 空闲过期秒数的读取键;若你需要精确控制过期时间,应先验证当前版本行为。

多服务器

命名 Controller 根路由会创建命名服务器,并读取 webServer.<name>.*

properties
webServer.admin.port=8081
webServer.admin.impl=smartweb.server.undertow.UndertowServer

每个服务器拥有独立路由和 Session 缓存。启动与停止时会发布 WebServerStatusChangedEvent

上传配置

SmartWeb 会把 webServer.upload 映射为 WebServerUploadConfig。不同服务器实现对上传限制的落实方式可能不同,生产环境应同时配置反向代理和服务器级请求体上限。

properties
webServer.upload.maxSize=50m
webServer.upload.maxFile=10
webServer.upload.singleFileMaxSize=10m
webServer.upload.writeTmpFileSize=10k
webServer.upload.tempDir=/var/tmp/smartweb
配置默认值说明
maxSize10m单次上传总量限制
maxFile-1文件数量限制,负数表示实现默认/不限
singleFileMaxSize10m单文件限制
writeTmpFileSize10k超过阈值写临时文件
tempDirJVM 临时目录上传临时目录

目录必须存在、可写并有清理策略。应用层限制不能替代网关和服务器层限制。

服务器实现成熟度

SmartHTTP

当前实现覆盖 JSON Object/Array、multipart 上传、Session 与 WebSocket。源码仍有以下边界:

  • Request.inputStream 固定为 null。
  • userAddressclientAddress 尚未实现。
  • JSON Body 不是合法 Object/Array 时进入 TODO。
  • XML Body 尚未实现。

Undertow

当前实现覆盖基本路由、查询参数、JSON Object 与 Session,但:

  • bodyArray 固定为 null。
  • uploadFiles 固定为 null。
  • inputStream 固定为 null。
  • userAddressclientAddress 尚未实现。
  • XML Body 尚未实现。
  • WebSocket 适配代码未出现在 Undertow 模块当前主源码中。

因此需要上传、JSON Array Body 或 WebSocket 时优先验证 SmartHTTP。选择 Undertow 前应为应用实际使用的参数类型编写 HTTP 端到端测试。

生产部署检查

  • 用反向代理终止 TLS,并正确清洗/传递 Forwarded Headers。
  • 不依赖当前未实现的客户端地址字段做安全决策。
  • 明确 Session Cookie 名称和安全属性;当前实现默认行为需按适配器核对。
  • 为 JSON 格式错误建立统一 400 处理,避免 TODO 异常成为 500。
  • 在网关和服务器两层限制请求体、上传和连接数。
  • 分别测试 OPTIONS/CORS、HEAD、异常响应和连接关闭。

基于 Apache License 2.0 发布