Mirth Connect globalMap取值异常:仪表盘显示存在但get返回null求助
Mirth Connect GlobalMap 读取异常问题解答
问题本质
你碰到的情况确实是仪表盘显示的是过期的GlobalMap快照,核心逻辑是:
- Mirth Connect的仪表盘GlobalMap视图并非实时同步内存中的数据,它是定期拉取的服务器端快照。哪怕你手动刷新、重连管理员,也可能因为缓存或快照更新机制的延迟,导致显示的是已经失效的旧数据。
- 实际上内存里的GlobalMap已经被清空(或目标字段已丢失),但仪表盘没同步这个状态。而你用
globalMap.put(...)新增的字段是写入当前活跃的内存GlobalMap,所以能正常读取,这也反过来印证了内存中的旧数据已经不存在。
关于重启的效果
重启Mirth Connect服务器几乎肯定能解决这个显示和实际不符的问题:
- 重启会清空服务器内存,重新初始化GlobalMap,仪表盘也会重新拉取最新的内存快照,此时显示内容会和实际内存状态一致。
- 注意:如果那些“显示存在但读不到”的字段需要恢复,你得确认它们原本是通过什么逻辑写入的(比如启动脚本、通道初始化代码),确保重启后这些逻辑能重新加载对应字段。
额外排查建议
- 检查是否有通道脚本、全局过滤器或自定义扩展,在后台执行了
globalMap.clear()或者针对特定字段的删除操作——这是内存中GlobalMap字段丢失的常见诱因。 - 查看服务器日志(默认在
Mirth Connect安装目录/logs/mirth.log),搜索和GlobalMap操作相关的异常信息,能帮你定位字段丢失的具体原因。
内容的提问来源于stack exchange,提问作者Jackalakalaka
相关产品推荐
相关产品推荐

