# 多服务部署 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](../../slices/06-hardware.md))。 | 独立 Spring Boot 应用类 `PlcApplicationBoot`。 | | **xlyFace** | 可选人脸识别模块。 | 独立模块,仍存在于 Gradle build 中。 | | **xlyFlow** | 工作流 / Activiti 代码和 controller。 | 作为模块存在,但当前分支中 `XlyFlowApplicationBoot` 被注释,因此应视为通过 `xlyEntry` 消费的代码,而不是明确可独立运行的 app。 | 每个模块有自己的 `application.yml` 和多个 `application-.yml`。启动时通过 `-Dspring.profiles.active=...` 选择 profile。 ## `settings.gradle` 中禁用的模块 ```text //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 范围内。 ## 服务如何互相发现 三种通信通道: 1. **共享数据库**:每个服务读写同一个 MySQL schema。大多数跨服务“通信”是通过共享表隐式发生。 2. **消息**:代码库中同时存在 ActiveMQ / JMS 和 RocketMQ。缓存失效([元数据变更后的缓存失效](cache-invalidation.md))使用 ActiveMQ / JMS 路径。 3. **HTTP REST**:同步调用,例如 xlyApi 调用 xlyEntry 的 `/business/*` 端点。 除 `application-.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 / 反向代理配置不在仓库中。只有拿到部署侧配置后再补入本页。