Skip to content

文档站合并插件(mms-plugin-doc)

Maven 模块:mms-plugin-doc。将 mms-servers/mms-doc(管理端 doc 包 + 站点开放 docApi)通过 MmsPlugin 注册进 同一 Spring 容器主 DispatcherServlet,浏览器访问的 /doc/v1/* 等往往仍落在 mms-admin 进程。

白话理解

相当于把 文档站后端「搬进」管理端同一个 Java 进程里,不是再开一个独立端口的小服务;安装包必须是 standalone 胖 JAR,否则缺依赖会 NoClassDefFoundError

标识与运行模式

插件 IDmms.plugin.doc(构建时由 pom 属性过滤进 plugin.json
runtimeModeSPI_ONLY(业务 Bean 由插件在 onLoad 挂入宿主,而非独立子 MVC 分发器)
入口类com.sxpcwlkj.plugin.doc.MmsPluginDocEntry

必须上传 shade 后的 standalone

宿主 install 接口通常只保存上传的那一个 JAR 文件。本插件依赖 mms-doc 及大量传递依赖,必须使用 maven-shade-plugin 打出的 *-standalone.jar 作为安装包;不要上传仅含几 KB 的瘦包,否则会 NoClassDefFoundError

构建时若 mms-docmms-plugin-doc 不在同一 reactor,须先对 mms-doc 执行 mvn install,再打插件包。详见模块内 pom.xml<description> 与主仓 mms-plugins/插件封装踩坑与注意事项.md

能力摘要

  • 文档业务:用户、订单、站点配置等 doc / docApi 能力随插件加载进入宿主。
  • 健康检查DocPluginHealthContributor;校验已注册 Bean 时须用宿主 PluginSpringBeanAttachment 命名的后缀规则,禁止对裸逻辑名 containsBean(易误判)。

Demo:引入插件

  1. 必须先 安装与当前 revision 一致的 mms-doc 到本地仓库(与 mms-plugin-doc 常不在同一 reactor):
bash
# 在 mms-plus 根或 mms-servers/mms-doc 目录执行,路径以你本机为准
mvn -f mms-servers/mms-doc clean install -DskipTests
cd mms-plugins/mms-plugin-doc
mvn -DskipTests package
  1. 使用 target/*-standalone.jar(或 mms-plugin-doc-dist/.../lib/mms-plugin-doc.jar,与 standalone 同内容)在 插件市场 上传安装。

  2. 重载后,文档站 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 注册。升级 宿主插件版本时请以当前主仓代码与踩坑文档为准。

参见

Released under the MIT License.