java动态实例化JMX MBean
我有一台白标/multi-tennant服务器,提供相同的服务,但品牌面向多个客户。我想使用JMX来监控每个客户的状态(呼叫的nbr、错误的nbr等)
我知道如何使用SpringJMX注释连接我的POJO(根据下面的代码)。我真正想要的是每个客户一个MBean,但由于客户在服务器启动时动态加载,我不知道如何使用注释将其连接起来
这可能吗?如果没有,是否可以在启动时实例化我的MBean
@Component
@ManagedResource(objectName = "TravelAPI:name=Customer")
public class CustomerStatus extends GeneralCustomerStatus {
@ManagedAttribute
String customerId;
.
.
.
}
# 1 楼答案
我们要做的是让实体实际实例化您的动态对象,通过
MBeanExporter
向JMX注册它们。我们将MBeanExporter
实例注入工厂实体,然后调用MBeanExporter.registerManagedResource(...)
例如,我们做了如下工作:
我们还使用了
NamingPolicy
,以便动态对象可以提供自己的名称,使其唯一。请参见此处的更多详细信息:另外,mySimpleJMX package有一些代码可以帮助处理动态对象