gpt4 book ai didi

java - 动态实例化 JMX MBean

转载 作者:行者123 更新时间:2023-11-30 05:51:58 25 4
gpt4 key购买 nike

我有一个白标/ Multi-Tenancy 服务器提供相同的服务,但为多个客户打上烙印。我想使用 JMX 来监视每个客户的状态(调用次数、错误次数等)。

我知道如何使用 Spring JMX 注释来连接我的 POJO(根据下面的代码)。我真正想要的是每个客户一个 MBean,但是因为客户是在服务器启动时动态加载的,所以我不知道如何使用注释将其连接起来。

这可能吗?如果没有,是否可以在启动时实例化我的 MBean?

@Component
@ManagedResource(objectName = "TravelAPI:name=Customer")
public class CustomerStatus extends GeneralCustomerStatus {

@ManagedAttribute
String customerId;
.
.
.


}

最佳答案

What I really want is one MBean per customer, but because the customers are dynamically loaded up at server startup time I don't know how to wire this up using annotations.

我们所做的是让实际实例化您的动态对象的实体通过 MBeanExporter 向 JMX 注册它们。我们将 MBeanExporter 实例注入(inject)工厂实体,然后调用 MBeanExporter.registerManagedResource(...)

例如我们做这样的事情:

...
mbeanExporter.registerManagedResource(beanInstance);
...

@Required
public void setMbeanExporter(MBeanExporter mbeanExporter) {
this.mbeanExporter = mbeanExporter;
}

我们还使用了 NamingPolicy 以便动态对象可以提供自己的名称以使其唯一。在此处查看更多详细信息:

Change @ManagedResource objectName dynamically

顺便说一句,我的SimpleJMX package有一些代码可以帮助处理动态对象。

关于java - 动态实例化 JMX MBean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12205042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com