多服务部署
xly 不是单个 Spring Boot WAR。仓库包含多个可部署模块,以及一些也被 xlyEntry 作为依赖使用的类库型 WAR 模块。
主要模块
| 服务 / 模块 | 角色 | 代码事实 |
|---|---|---|
| xlyEntry | 主运行时与 builder/admin surface。承载 /business/*、/gdsmodule/*、/gdsconfigform/*、/gdsconfigtb/*、报表、登录和其他框架 controller。 |
依赖 xlyManage、xlyBusinessService、xlyFlow。 |
| xlyApi | 面向 /api/*、/online/*、/pro/*、/thirdparty/* 等端点的 API 模块。 |
独立 Spring Boot 应用类 ApiApplicationBoot。 |
| xlyInterface | 外部集成模块,带 Swagger 依赖和第三方集成代码。 | 独立 Spring Boot 应用类 InterfaceApplicationBoot。 |
| xlyPlc | 车间 PLC 桥接(切片 6)。 | 独立 Spring Boot 应用类 PlcApplicationBoot。 |
| xlyFace | 可选人脸识别模块。 | 独立模块,仍存在于 Gradle build 中。 |
| xlyFlow | 工作流 / Activiti 代码和 controller。 | 作为模块存在,但当前分支中 XlyFlowApplicationBoot 被注释,因此应视为通过 xlyEntry 消费的代码,而不是明确可独立运行的 app。 |
每个模块有自己的 application.yml 和多个 application-<profile>.yml。启动时通过 -Dspring.profiles.active=... 选择 profile。
settings.gradle 中禁用的模块
//include 'xlyErpTask'
//include 'xlyRxtx'
//include 'xlyFile'
三者在磁盘上存在,但被排除在当前 Gradle build 之外:
-
xlyErpTask:长运行后台任务。 -
xlyRxtx:原生串口库。xlyPlc 不需要直接串口访问时会禁用;部分机型使用 TCP / Ethernet。 -
xlyFile:旧文件管理模块,已被xlyPlatFileUpload中的阿里云 OSS 集成取代。
维护人员清理代码库时应判断删除还是保留为历史参考。它们占用磁盘空间,但不影响 build。
Plat* 表族
xlyPlat* 模块(xlyPlatMerchantController、xlyPlatUserService、xlyPlatPayService、xlyPlatMarketingService、xlyPlatCainiaoWaybillSevice、xlyPlatSmsService、xlyPlatReportForm、xlyPlatFileUpload、xlyPlatJmsConsumer / Productor、xlyPlatTask、xlyPlatWebsocket、xlyPlatConstant)属于 B2B 印刷平台层,不在本 Wiki 范围内。
服务如何互相发现
三种通信通道:
- 共享数据库:每个服务读写同一个 MySQL schema。大多数跨服务“通信”是通过共享表隐式发生。
- 消息:代码库中同时存在 ActiveMQ / JMS 和 RocketMQ。缓存失效(元数据变更后的缓存失效)使用 ActiveMQ / JMS 路径。
-
HTTP REST:同步调用,例如 xlyApi 调用 xlyEntry 的
/business/*端点。
除 application-<profile>.yml 中按环境硬编码的 peer URL 外,没有服务注册 / 发现机制。
部署环境中的 URL 路由
工作区 .env.local 在实时环境中把 后台 指向端口 8597,前台 指向端口 8598。这足以识别两个面向操作人员的 surface;反向代理和 context-path 映射属于部署细节,不是本仓库中有代码依据的事实。
Profile 组合
application-saas.yml、application-linux.yml、application-win.yml、application-15S.yml、application-S10.yml、application-pro.yml、application-T0.yml、application-T1.yml 等覆盖以下组合:
- 操作系统(linux / win)。
- 客户类别(saas、15S、S10 等)。
- 环境(dev、pro)。
- 印刷机机型(xlyPlc)。
每个部署为每个服务选择一个 profile。“某客户 → 哪些 profile”的映射位于运维部署文档,不在代码库中。
未决:生产 URL 路由
8597 / 8598 的精确 nginx / 反向代理配置不在仓库中。只有拿到部署侧配置后再补入本页。