2014-01-18 19 views
0

我使用弹簧的JMX版本2.5,其中我使用JMX 如下所示..@Managedoperation替代在XML配置方式在弹簧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(或其子类之一)。请告知是否有任何其他方式来实现这一点,任何早期的帮助将不胜感激。

回答

0

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

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

如果你要坚持一个MetadataMBeanInfoAssembler,你可以尝试,而不是一个自定义JmxAttributeSource让你只重塑一半车轮,而不是一大堆......

+0

非常感谢你能请指教一个例子 – user1633823

+0

任何例子都能帮助我更好地掌握 – user1633823

+0

为什么当你问我对最初问题的回答有更多帮助时,你问了一个新问题? http://stackoverflow.com/questions/21179066/replacing-managed-operation-from-xml-itself-in-spring你应该至少在这里提供了一个链接到这个问题。我现在已经更新了其他答案和更多细节。 –