我有一个白标/多tennant服务器,提供相同的服务,但为多个客户提供品牌。我想使用JMX来监控每个客户的状态(呼叫的nbr、错误的nbr等)。
我知道如何使用Spring JMX注释来连接我的POJO(根据下面的代码)。我真正想要的是每个客户一个MBean,但是因为客户是在服务器启动时动态加载的,所以我不知道如何使用注释将其连接起来。
这个是可能的吗?如果没有,是否可以在启动时实例化我的MBeans?
@Component
@ManagedResource(objectName = "TravelAPI:name=Customer")
public class CustomerStatus extends GeneralCustomerStatus {
@ManagedAttribute
String customerId;
.
.
.
}发布于 2012-08-31 05:26:11
我真正想要的是每个客户一个MBean,但是因为客户是在服务器启动时动态加载的,所以我不知道如何使用注释将其连接起来。
我们所做的是让实体实例化您的动态对象,通过MBeanExporter将它们注册到JMX。我们将MBeanExporter实例注入到工厂实体中,然后调用MBeanExporter.registerManagedResource(...)。
例如,我们这样做:
...
mbeanExporter.registerManagedResource(beanInstance);
...
@Required
public void setMbeanExporter(MBeanExporter mbeanExporter) {
this.mbeanExporter = mbeanExporter;
}我们还使用NamingPolicy,这样动态对象就可以提供它们自己的名称,从而使它们具有唯一性。在这里查看更多详细信息:
顺便说一句,我的SimpleJMX package有一些代码可以帮助处理动态对象。
https://stackoverflow.com/questions/12205042
复制相似问题