0

我正在使用 Spring 2.5 版的 JMX,其中我正在使用 JMX,如下所示。

@ManagedOperation(description = "Mark the Entry corresponding ABC flow")
@ManagedOperationParameters(value = {
        @ManagedOperationParameter(name = "def", description = "Ids of the entries that needs to be STOP"),
        @ManagedOperationParameter(name = "Comments", description = "Note on why these entries are being marked as stop") })
public void abcstop(String def, String gtr){
    StringBuffer gfhtrPresent= jmxService.abcd(Ids, comments);
    if(idsNotPresent.length()>0) 
        throw new IOARuntimeException("<font color=red><b>No data found for the following id/id's </b></font>"+idsNotPresent);
}

现在我想删除 @Managedoperation 注释并想在 XML 中配置它,请告知我如何配置 @Managedoperation ,因为我想从 xml 本身运行相同的功能,请告知。

实现这一点的一种方法是实现您自己的 MBeanInfoAssembler(或标准的子类之一)。请告知是否有任何其他方法可以实现这一目标,任何早期帮助将不胜感激。

4

1 回答 1

0

最简单的方法可能是使用InterfaceBasedMBeanInfoAssembler.

首先,将 JMX 接口公开为代码中显式定义的接口。(无论如何,拥有这样的接口可能是一个好主意。)然后你只需告诉InterfaceBasedMBeanInfoAssembler它通过其managedInterfaces属性公开一个特定的接口(或多个接口)。除了首先定义接口(您可能已经完成或尚未完成)之外,其余部分完全可以通过 XML 配置来实现。但是您将无法通过这种方式提供非常详细的元数据;这是一个权衡。

如果您要坚持使用MetadataMBeanInfoAssembler,则可以改为尝试自定义JmxAttributeSource,这样您就只是重新发明了一半,而不是全部……</p>

于 2014-01-18T07:40:45.517 回答