@Managedoperation在spring jmx中以XML配置方式替代

时间:2014-01-18 07:07:37

标签: spring jmx spring-jmx

我使用的是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 annaotation并希望用XML配置它,请告诉我如何配置@Managedoperation,因为我想从xml本身运行相同的功能,请指教。

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

1 个答案:

答案 0 :(得分:0)

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

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

如果您要坚持使用MetadataMBeanInfoAssembler,您可以尝试自定义JmxAttributeSource,这样您只需重新发明一半轮而不是整个很多...