文档站合并插件(mms-plugin-doc)
Maven 模块:mms-plugin-doc。将 mms-servers/mms-doc(管理端 doc 包 + 站点开放 docApi)通过 MmsPlugin 注册进 同一 Spring 容器与 主 DispatcherServlet,浏览器访问的 /doc/v1/* 等往往仍落在 mms-admin 进程。
白话理解
相当于把 文档站后端「搬进」管理端同一个 Java 进程里,不是再开一个独立端口的小服务;安装包必须是 standalone 胖 JAR,否则缺依赖会 NoClassDefFoundError。
标识与运行模式
| 项 | 值 |
|---|---|
| 插件 ID | mms.plugin.doc(构建时由 pom 属性过滤进 plugin.json) |
| runtimeMode | SPI_ONLY(业务 Bean 由插件在 onLoad 挂入宿主,而非独立子 MVC 分发器) |
| 入口类 | com.sxpcwlkj.plugin.doc.MmsPluginDocEntry |
必须上传 shade 后的 standalone
宿主 install 接口通常只保存上传的那一个 JAR 文件。本插件依赖 mms-doc 及大量传递依赖,必须使用 maven-shade-plugin 打出的 *-standalone.jar 作为安装包;不要上传仅含几 KB 的瘦包,否则会 NoClassDefFoundError。
构建时若 mms-doc 与 mms-plugin-doc 不在同一 reactor,须先对 mms-doc 执行 mvn install,再打插件包。详见模块内 pom.xml 的 <description> 与主仓 mms-plugins/插件封装踩坑与注意事项.md。
能力摘要
- 文档业务:用户、订单、站点配置等
doc/docApi能力随插件加载进入宿主。 - 健康检查:
DocPluginHealthContributor;校验已注册 Bean 时须用宿主PluginSpringBeanAttachment命名的后缀规则,禁止对裸逻辑名containsBean(易误判)。
Demo:引入插件
- 必须先 安装与当前 revision 一致的
mms-doc到本地仓库(与mms-plugin-doc常不在同一 reactor):
# 在 mms-plus 根或 mms-servers/mms-doc 目录执行,路径以你本机为准
mvn -f mms-servers/mms-doc clean install -DskipTests
cd mms-plugins/mms-plugin-doc
mvn -DskipTests package使用
target/下*-standalone.jar(或mms-plugin-doc-dist/.../lib/mms-plugin-doc.jar,与 standalone 同内容)在 插件市场 上传安装。重载后,文档站 API 随 管理端同一进程 暴露(常见前缀
/doc/v1/等,详见mms-doc源码与 文档模块说明)。
Demo:调用能力(业务 HTTP)
本插件不是 /plugin/{id}/... 形态的 HOST_MVC 小接口,而是把 docApi / 管理端 doc 包挂进宿主 DispatcherServlet:
- 浏览器或前端按 知识付费 / 文档站 既有路由访问(例如站点
/doc/v1/*,以部署与context-path为准)。 tryInvokePeerPlugin/pluginHost/invoke适用于MmsPlugin入口类上的公有方法;文档业务一般直接调 REST,而非反射MmsPluginDocEntry。
宿主配合说明(过滤器等)
文档站 token → Authorization 等桥接若在应用启动完成后才由插件 ServletContext.addFilter 注册会不可靠;历史上部分能力在 mms-plugin-host 启动期以 FilterRegistrationBean 注册。升级 宿主与插件版本时请以当前主仓代码与踩坑文档为准。
参见
- JAR 插件分册总览 · 知识付费文档模块(产品)(若指独立产品文档,与本 JAR 合并形态不同,勿混淆)
- 主仓
mms-plugins/插件封装踩坑与注意事项.md
