2011-05-31 134 views
3

文檔我使用了這些Spring註解一些代碼:如何自動生成的類註釋春天JMX註釋

org.springframework.jmx.export.annotation.ManagedAttribute; 
org.springframework.jmx.export.annotation.ManagedOperation; 
org.springframework.jmx.export.annotation.ManagedOperationParameter; 
org.springframework.jmx.export.annotation.ManagedOperationParameters; 
org.springframework.jmx.export.annotation.ManagedResource; 

我要生成使用註解註釋的一些文件(甚至只是的javadoc)例如考慮以下方法?

@ManagedOperation(description="Does foo to bar") 
@ManagedOperationParameters({ 
@ManagedOperationParameter(name = "bar", description = "The bar you want to foo.")})  
public long fooBar(Bar bar) throws Exception { 
    ... 
} 

有一些方法可以讓我自動生成此文件,否則我將不得不重複,除了它在所有的javadoc註釋字符串?

回答

2

首先,使用委託給getRegisteredObjectNames()的公共方法創建一個自定義AnnotationMbeanExporter。用它作爲你的mbeanExporter。

例如:

@Component 
// This is a copy of the AnnotationMBeanExporter with a public version of getRegisteredObjectNames() 
public class AnnotationMBeanExporter extends MBeanExporter { 

    @Autowired 
    MBeanServer mbeanServer; 

    AnnotationJmxAttributeSource annotationSource = new AnnotationJmxAttributeSource(); 

    AnnotationMBeanExporter() { 
     setServer(mbeanServer); 
     setNamingStrategy(new MetadataNamingStrategy(annotationSource)); 
     setAssembler(new MetadataMBeanInfoAssembler(annotationSource)); 
     setAutodetectMode(MBeanExporter.AUTODETECT_ALL); 
    } 

    public ObjectName[] getExportedObjectNames() { 
    return getRegisteredObjectNames(); 
    } 
} 

然後爲您的報告,迭代對象名稱從getExportedObjectNames()返回,並得到每個JMX豆相關的元數據。

例如:

for (ObjectName objectName: mbeanExporter.getExportedObjectNames()) { 
     MBeanInfo mbeanInfo = mbeanServer.getMBeanInfo(objectName); 
     MBeanOperationInfo[] operations = mbeanInfo.getOperations(); 
     // etc. 
    } 
+2

我想你錯過了 'Java' 作爲標籤 – abalogh 2011-05-31 18:42:36

+0

:)是微不足道的是轉換成Java。我剪切和粘貼現有的代碼。 – sourcedelica 2011-05-31 22:21:56

+0

好吧好吧:)轉換爲java。 – sourcedelica 2011-05-31 22:49:08