我目前正在构建一个基于 JMX 的监控设施。被监控的系统已经以发布/订阅的方式暴露了一些KPI,即自定义编码的监控客户端可以连接到系统,激活和订阅这些KPI,然后系统会在有新的KPI值可用时立即通知客户端. 由于这些 KPI 的评估可能在计算上很昂贵,因此仅评估那些至少具有一个订阅客户端的 KPI。
我现在的任务是扩展系统,提供基于 JMX 和 JMX 通知的监控服务器,以便任何 JMX 客户端都可以激活、订阅和接收这些 KPI。
我面临的问题是:每个连接的客户端都会更改服务器上的某些状态(即激活 KPI 并注册一些侦听器),一旦客户端的会话完成或由于连接丢失而失败,我需要立即清理这些状态。
关于会话,JMX 规范在第 13.1 章中声明:
会话在客户端上具有状态,特别是其侦听器(请参阅第 208 页的第 13.4 节“添加远程侦听器”)。会话不一定在服务器上有状态,对于本规范定义的两个连接器,它没有。
有谁知道允许维护某些会话状态的 JMXConnectorServer 实现?任何实现这种服务器的代码示例、教程或指导也将受到高度赞赏。