Skip to content
返回

后端脚手架

脚手架

DigitalHainan Spring 微服务框架脚手架与集成指南,覆盖 POM、缓存、MyBatis、认证、OSS 等核心模块。

概述
后端脚手架

digitalhainan-tongweb 信创适配 ​

本文档用于指导在目标项目中完成 digitalhainan-tongweb 模块集成。

执行顺序:

  1. 先完成「12.1.2 快速集成」的全部步骤(必须)
  2. 根据业务需求,查阅「功能集成决策索引」选择对应路径,逐项实现
  3. 遇到配置问题时参考「12.1.3 配置属性参考」
  4. 出现异常时查阅「12.1.6 常见问题」

代码约定: 本模块为纯配置模块,无 Java 源码。所有配置示例使用 YAML 格式。


12.1.1 模块简介 ​

digitalhainan-tongweb-spring-boot-starter 是数字海南框架提供的信创 Web 容器替代方案,用于将 Spring Boot 项目默认的 Tomcat 容器替换为东方通 TongWeb V8.0 嵌入式版,满足国产化/信创合规要求。

  • 零代码改动,通过 Maven Profile 一键将 Tomcat 替换为 TongWeb
  • 支持本地文件认证(file)和远程 License Server 认证(remote)两种授权方式
  • 支持单向/双向 SSL(mTLS),可限制国密套件满足等保/密评合规
  • 基于 Spring Boot Actuator 提供运行时监控能力,配套 Grafana 模板
  • 提供 Spring Boot WebSocket 规范的 TongWeb 适配

Maven 坐标:

xml
<dependency>
    <groupId>cn.com.digitalhainan</groupId>
    <artifactId>digitalhainan-tongweb-spring-boot-starter</artifactId>
</dependency>

前置依赖(项目 pom.xml 中必须已有):

依赖说明
digitalhainan-pom父 POM,定义 xc-tongweb Profile 和 TongWeb 版本管理
TongWeb 嵌入式 License需联系东方通相关人员获取 license.dat 授权文件

当前版本: 2.0.0-SNAPSHOT

技术规格:

项目版本/规格
TongWeb 嵌入式版8.0.E.9
Spring Boot2.x(对应 tongweb-spring-boot-starter-2.x)
JDKJDK 8+

12.1.2 快速集成 ​

目标: 完成以下 7 个步骤后,项目即运行在 TongWeb 容器上。

12.1.2.1 确认父 POM ​

操作: 业务项目需继承 digitalhainan-pom,其中定义了 xc-tongweb Profile 和 TongWeb 版本管理:

xml
<parent>
    <groupId>cn.com.digitalhainan</groupId>
    <artifactId>digitalhainan-pom</artifactId>
    <version>2.0.0-SNAPSHOT</version>
</parent>

12.1.2.2 激活 xc-tongweb Profile ​

操作: 通过以下方式之一激活 xc-tongweb Profile,自动完成 Tomcat 排除 + TongWeb 引入。

方式一:IDE 中手动勾选(推荐日常开发)

以 IntelliJ IDEA 为例:

  1. 打开右侧 Maven 面板
  2. 展开 Profiles
  3. 勾选 xc-tongweb

勾选后 IDE 会重新导入 Maven 依赖,Tomcat 会被排除、TongWeb 会被引入,此时可直接运行启动类进行开发调试。

方式二:命令行指定

bash
mvn clean package -P xc-tongweb

Profile 工作原理(仅供参考,无需在业务项目中重复配置):

xc-tongweb Profile 定义在 digitalhainan-pom/pom.xml 中,激活后自动执行:

  1. 排除 Tomcat:从 spring-boot-starter-web 中排除 spring-boot-starter-tomcat
  2. 引入 TongWeb:自动引入 digitalhainan-tongweb-spring-boot-starter

12.1.2.3 配置 License 授权 ​

操作: TongWeb 嵌入式版启动时需依赖授权文件校验,请联系东方通相关人员获取 license.dat 授权文件。

将 license.dat 文件放置到 src/main/resources/ 目录下,在 application.yml 中配置:

yaml
server:
  tongweb:
    license:
      # 指定认证方式为本地认证
      type: file
      # 指定 license.dat 文件路径(classpath 方式)
      path: classpath:license.dat

也支持使用本地磁盘绝对路径(适用于生产环境外部挂载):path: /opt/license/license.dat

如需远程认证,参考「12.1.3 配置属性参考 - 3.1 License 配置」中的 remote 模式。

12.1.2.4 本地启动验证 ​

操作: 启动项目,检查以下条件:

IDE 直接运行:找到项目中带有 @SpringBootApplication 注解的启动类,右键 → Run 即可。

Maven 命令启动:

bash
mvn spring-boot:run -P xc-tongweb
检查项预期结果
控制台 Banner显示 TongWeb 专属 Banner(非 Tomcat)
License 日志出现 授权证书已经成功通过校验
容器初始化日志出现 TongWeb initialized with port(s): 9080 (http)
Servlet 引擎日志出现 Starting Servlet engine: [TongWeb/8.0.E.9]
应用启动出现 Started Application in x.xxx seconds

TongWeb 专属 Banner:

plain
     _____               __        __   _
    |_   _|__  _ __   __ \ \      / /__| |__
      | |/ _ \| '_ \ / _` \ \ /\ / / _ \ '_ \
      | | (_) | | | | (_| |\ V  V /  __/ |_) |
      |_|\___/|_| |_|\__, | \_/\_/ \___|_.__/
                     |___/
Copyright  2026 Beijing TongTech All rights reserved.

如果启动失败,参考「12.1.6 常见问题 Q1」排查 License 问题。

12.1.2.5 验证依赖切换 ​

操作: 确认 Tomcat 已被排除、TongWeb 已引入:

bash
# 确认无 Tomcat 依赖(预期无输出)
mvn dependency:tree -P xc-tongweb | findstr tomcat

# 确认 TongWeb 依赖已引入
mvn dependency:tree -P xc-tongweb | findstr tongweb

12.1.2.6 打包部署 ​

bash
# 构建(激活 TongWeb Profile)
mvn clean package -P xc-tongweb

# 启动
java -jar target/your-app.jar

注意:-P xc-tongweb 仅在打包时生效。IDE 中直接 Run 启动类时,需通过 Step 2 的方式手动激活 Profile。

12.1.2.7 回退方案(如需) ​

TongWeb 集成采用零侵入设计,回退到 Tomcat 无需修改任何代码:

bash
# 回退到 Tomcat(不激活 TongWeb Profile)
mvn clean package

# 启动(使用默认 Tomcat 容器)
java -jar target/your-app.jar

回退后行为与集成前完全一致,100% 向后兼容。


12.1.3 配置属性参考 ​

12.1.3.1 License 配置 server.tongweb.license.* ​

参数默认值说明示例值
type—License 认证模式。file:本地文件认证;remote:远程 License Server 认证file
path—本地认证时 license.dat 文件路径,支持 classpath: 前缀或绝对路径classpath:license.dat
license-ips—远程认证时 License Server 地址,格式 IP:端口127.0.0.1:8888
license-public-key—远程认证时 License-SDK 请求加密公钥(从 License Server 管理控制台获取)your-public-key
ssl-enabledfalse远程认证是否启用 SSL 加密通信true
ssl.key-store—SSL 加密密钥库路径classpath:client.p12
ssl.key-store-password—加密密钥库密码123456
ssl.key-store-type—加密密钥库格式(PKCS12/JKS)PKCS12
ssl.trust-store—SSL 签名信任库路径classpath:server.jks
ssl.trust-store-password—签名信任库密码123456
ssl.trust-store-type—签名信任库格式(JKS/PKCS12)JKS

license.dat 放置位置说明:

放置位置配置方式说明
src/main/resources/classpath:license.dat推荐,打包后自动包含在 jar 中
本地磁盘绝对路径,如 /opt/license/license.dat需确保运行环境存在该文件

License 文件字段说明:

字段说明
产品名称授权的产品标识(如 TongWeb)
版本号授权适用的产品版本
授权类型试用版 / 正式版
到期日期授权有效期截止时间
MAC 地址 / IP 绑定绑定的服务器硬件标识(部分授权类型)
最大连接数授权的最大并发连接数限制

更新 License:

  • 本地认证:替换 license.dat 文件,重启应用即可生效
  • 远程认证:在 License Server 管理控制台更新授权,各应用无需重启(License Server 会通知客户端刷新)

12.1.3.2 HTTP 配置 server.tongweb.* ​

参数默认值说明示例值
server-nametongweb服务器名称,用于 Banner 日志和运行状态标识myapp
use-httptrue是否开启 HTTP 明文监听,设为 false 则不启动 HTTP 端口true
http-port9080HTTP Connector 监听端口(注意与 Tomcat 8080 不同)8080
http2-enabledfalse是否启用 HTTP/2 协议(需配合 HTTPS 使用)true
max-http-post-size2097152HTTP POST 请求体最大字节数(默认 2MB),文件上传场景需调大,-1 为不限制5242880
http-header-size8192HTTP 请求头最大字节数(默认 8KB),大 Token 场景需调大16384
max-parameter-count10000单个请求最大参数数量(Query + POST 表单)5000
max-swallow-size2097152请求体未被完全读取时最大吞咽字节数,-1 为不限制-1
max-save-post-size0FORM/CGI 场景缓存 POST 请求体到内存的最大字节数,0 为不缓存4096
uri-encodingUTF-8URI 路径参数字符编码。可选值:UTF-8/ISO-8859-1/GBKUTF-8

12.1.3.3 HTTPS/SSL 配置 server.tongweb.* ​

参数默认值说明示例值
use-httpsfalse是否开启 HTTPS 加密监听true
https-port9443HTTPS Connector 监听端口8443
keystore-path—SSL 密钥库文件路径,支持 classpath: 或绝对路径。启用 HTTPS 时必须配置classpath:keystore.p12
keystore-password—密钥库访问密码。启用 HTTPS 时必须配置changeit
key-password—密钥库中私钥条目密码(通常与 keystore-password 相同)changeit
keystore-type—密钥库格式。JKS(Java 原生)/ PKCS12(国际通用,推荐)PKCS12
truststore-path—信任库文件路径,双向 SSL(mTLS)场景必须配置/opt/certs/trust.jks
truststore-password—信任库访问密码。双向 SSL 场景必须配置changeit
truststore-type—信任库格式。JKS / PKCS12JKS
client-authnone客户端证书认证模式。none(不要求)/ want(可选)/ need(强制)need
ciphers—允许的 SSL/TLS 加密套件列表(逗号分隔),可限制为国密套件满足等保/密评合规TLS_AES_256_GCM_SHA384

12.1.3.4 容器行为配置 server.tongweb.* ​

参数默认值说明示例值
use-manifest-jar-filetrue是否使用 Manifest Jar 方式加载类。Spring Boot Fat Jar 部署时必须为 truetrue
session-timeout30HTTP Session 超时时间(分钟)60
server-initialize-on-startupfalse是否启动时立即初始化 Servlet 容器。设为 true 可提前发现配置错误true

12.1.3.5 远程 License 补充配置 server.tongweb.license-remote.* ​

参数默认值说明示例值
typeremote远程 License 认证模式类型。file / remoteremote
address—License Server 地址,格式 IP:端口192.168.1.100:8631
product-name—在 License Server 上注册的产品名称标识myapp

12.1.3.6 完整 YAML 示例 ​

yaml
server:
  tongweb:
    # License 配置(本地认证)
    license:
      type: file
      path: classpath:license.dat

    # HTTP 配置
    server-name: myapp
    use-http: true
    http-port: 9080

    # HTTPS 配置(生产环境建议启用)
    use-https: true
    https-port: 8443
    keystore-path: classpath:keystore.p12
    keystore-password: your-password
    keystore-type: PKCS12

    # 容器行为
    use-manifest-jar-file: true
    session-timeout: 30
    uri-encoding: UTF-8

远程认证模式完整示例:

yaml
server:
  tongweb:
    license:
      type: remote
      license-ips: 127.0.0.1:8888
      license-public-key: your-public-key
      ssl-enabled: true
      ssl:
        key-store: classpath:client.p12
        key-store-password: 123456
        key-store-type: PKCS12
        trust-store: classpath:server.jks
        trust-store-password: 123456
        trust-store-type: JKS

12.1.4 核心功能使用 ​

功能集成决策索引 ​

AI 执行指引: 先完成「12.1.2 快速集成」,然后根据业务需求在下表中找到对应路径,跳转到对应小节实现。

业务需求集成路径前置条件
基础容器替换(Tomcat → TongWeb)12.1.2 快速集成完成 Step 1-7
配置远程 License 认证4.1完成第二章
启用 HTTPS/SSL 加密4.2完成第二章 + 准备 SSL 证书
启用运行时监控(Actuator + Grafana)4.3完成第二章
启用 WebSocket 支持4.4完成第二章
搭建 License Server(多实例场景)4.5完成第二章

12.1.4.1 远程 License 认证 ​

适用场景: 多实例集中管理 License 授权,避免每个实例单独放置 license.dat 文件。 前置条件: 已从 License Server 管理控制台获取加密公钥。

Step 1: 修改配置

yaml
server:
  tongweb:
    license:
      type: remote
      license-ips: 127.0.0.1:8888
      license-public-key: your-public-key

Step 2:(可选)启用 SSL 加密通信

yaml
server:
  tongweb:
    license:
      ssl-enabled: true
      ssl:
        key-store: classpath:client.p12
        key-store-password: 123456
        key-store-type: PKCS12
        trust-store: classpath:server.jks
        trust-store-password: 123456
        trust-store-type: JKS

验证: 启动日志中出现 授权证书已经成功通过校验。


12.1.4.2 HTTPS/SSL 配置 ​

适用场景: 生产环境需要加密传输,或需要满足等保/密评合规要求。 前置条件: 已准备 SSL 证书文件(PKCS12 或 JKS 格式)。

Step 1: 启用 HTTPS(单向 SSL)

yaml
server:
  tongweb:
    use-https: true
    https-port: 8443
    keystore-path: classpath:keystore.p12
    keystore-password: your-password
    keystore-type: PKCS12

Step 2:(可选)启用双向 SSL(mTLS)

yaml
server:
  tongweb:
    truststore-path: /opt/certs/trust.jks
    truststore-password: changeit
    truststore-type: JKS
    client-auth: need

Step 3:(可选)限制国密加密套件

yaml
server:
  tongweb:
    ciphers: TLS_AES_256_GCM_SHA384

验证: 通过 https://localhost:8443 访问应用,浏览器显示安全连接。


12.1.4.3 运行时监控 ​

适用场景: 需要实时监控 TongWeb 容器运行状态(连接池、请求处理、Session 等)。 前置条件: 项目已引入 Spring Boot Actuator。

Step 1: 引入监控依赖

在业务项目 pom.xml 中添加:

xml
<dependency>
    <groupId>com.tongweb.springboot</groupId>
    <artifactId>tongweb-spring-boot-monitor-starter-2.x</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Step 2: 获取监控指标

启用后可通过 Actuator 端点获取以下指标:

  • 连接器状态 — 活跃连接数、请求数等
  • Servlet 引擎指标 — 请求处理时间、错误率等
  • Session 统计 — 活跃 Session 数等

Step 3:(可选)导入 Grafana 监控模板

TongWeb 提供配套 Grafana 监控模板(位于安装包根目录):

  • 嵌入式_配置指标-xxxx.json:K8s 环境 Grafana 监控模板
  • 嵌入式_配置指标单机版.json:单机版 Grafana 监控模板

验证: 访问 /actuator 端点确认 TongWeb 监控指标已注册。


12.1.4.4 WebSocket 支持 ​

适用场景: 需要在 TongWeb 容器上使用 Spring Boot WebSocket(@ServerEndpoint 注解)。 前置条件: 完成第二章快速集成。

Step 1: 引入 WebSocket 依赖

xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
    <groupId>com.tongweb.springboot</groupId>
    <artifactId>tongweb-spring-boot-websocket-2.x</artifactId>
</dependency>

Step 2: 使用 @ServerEndpoint 注解

引入依赖后,Spring Boot 的 @ServerEndpoint 注解可正常使用,无需额外配置。

验证: 创建 WebSocket 端点并通过客户端连接测试。


12.1.4.5 License Server 搭建(远程认证场景) ​

适用场景: 多实例集中管理 License 授权。

操作步骤:

  1. 从东方通获取 License Server 安装包
  2. 在授权管理机上部署并启动 License Server
  3. 通过 License Server 管理控制台上传 license.dat 授权文件
  4. 获取加密公钥(license-public-key)
  5. 在各业务应用的 application.yml 中配置远程认证信息(参见 4.1 节)

12.1.5 版本变更记录 ​

v2.0.0(当前版本) ​

  • [新增] 初始化 TongWeb Spring Boot Starter 项目配置
  • [新增] 封装 TongWeb 嵌入式容器依赖(tongweb-spring-boot-starter-2.x)
  • [新增] 可选监控模块(tongweb-spring-boot-monitor-starter-2.x)
  • [新增] 可选 WebSocket 模块(tongweb-spring-boot-websocket-2.x)
  • [新增] 通过 digitalhainan-pom xc-tongweb Profile 实现一键容器切换

12.1.6 常见问题 ​

Q1: License 校验失败 ​

排查步骤:

  1. 确认 license.dat 文件存在且路径配置正确
  2. 如使用 classpath: 路径,确认文件已打包进 jar(检查 target/ 目录下的 jar 包内容)
  3. 确认 server.tongweb.license.type 和 server.tongweb.license.path 配置无误
  4. 如使用远程认证,确认 License Server 地址可达、公钥正确

常见错误:

yaml
server:
  tongweb:
    license:
      # 错误:路径未加 classpath: 前缀,但文件在 resources 目录
      path: license.dat
      # 正确写法
      # path: classpath:license.dat

Q2: 依赖冲突(Tomcat vs TongWeb) ​

排查步骤:

  1. 使用依赖树检查冲突:
bash
mvn dependency:tree -P xc-tongweb > dep-tree.txt
  1. 确认 Tomcat 依赖已被完全排除:
bash
findstr tomcat dep-tree.txt

预期无输出,如有残留请检查 Profile 是否正确激活。

Q3: HTTPS 配置问题 ​

排查步骤:

  1. 确认证书文件路径正确且文件存在
  2. 确认密码与证书生成时设置的密码一致
  3. 确认 keystore-type 与证书文件格式匹配(PKCS12 对应 .p12/.pfx,JKS 对应 .jks)
yaml
server:
  tongweb:
    use-https: true
    https-port: 8443
    keystore-path: classpath:keystore.p12
    keystore-password: your-password
    keystore-type: PKCS12

Q4: WebSocket 不生效 ​

原因分析: 未引入 tongweb-spring-boot-websocket-2.x 依赖。

解决方案: 在 pom.xml 中添加 WebSocket Starter 依赖(参见「12.1.4 核心功能使用 - 4.4 WebSocket 支持」)。

Q5: 端口不一致导致请求失败 ​

原因分析: TongWeb 默认 HTTP 端口为 9080,Tomcat 默认为 8080。切换容器后需调整前端代理或测试脚本中的端口配置。

解决方案: 修改 server.tongweb.http-port 为 8080,或调整调用方端口。


12.1.7 版本兼容性矩阵 ​

digitalhainan-tongwebSpring BootTongWebJDK备注
2.0.0-SNAPSHOT2.x8.0.E.9 嵌入式8/11/17当前版本;零侵入 Profile 切换

注意事项:

开发阶段:

  • xc-tongweb Profile 仅在 Maven 打包时生效。IDE 中直接 Run 启动类时,需手动在 Maven 面板勾选该 Profile,否则仍使用 Tomcat
  • TongWeb 默认 HTTP 端口为 9080,Tomcat 默认为 8080。切换容器后注意调整前端代理或测试脚本中的端口配置
  • 确保项目中不存在多个 Servlet 容器实现(如同时引入 Tomcat 和 TongWeb)。使用 mvn dependency:tree 检查

上线后:

  • 生产环境建议使用磁盘绝对路径(如 /opt/license/license.dat)而非 classpath 方式,便于独立更新 License 无需重新部署 jar 包
  • TongWeb 运行日志输出到 logs/tongweb/ 目录,需关注磁盘空间,建议配置日志轮转策略
  • 生产环境建议启用 HTTPS(use-https: true),证书文件路径和密码应通过环境变量或配置中心管理,避免硬编码
  • 建议启用 monitor-starter 并对接 Grafana,实时监控 TongWeb 连接池、请求处理等关键指标

Power By 数字海南