[英]How to add description for MBean method to see it in jmx-console of JBOSS
我正在使用JBoss 4.3.2.GA
我已將方法添加到我的MBean服務中。 方法在簽名中有幾個參數。 它工作正常,但我想要更多。
問題:當我在jmx-console中看到方法簽名時,我不知道每個輸入字段的含義,因為jmx-console不顯示參數名稱,僅顯示值的輸入字段。
是否可以在JBOSS的jmx-console中添加每個參數的描述(使用Java代碼,而不是xml)以顯示此描述?
我嘗試使用Spring注釋: @ManagedOperation
至少添加方法描述,但沒有結果(該描述未顯示在jmx-console中)。
可能有人解決了這個問題...
在Java中,如果您不使用標准MBean,而可以使用DynamicMBean
,則需要執行getMBeanInfo()
來返回所有數據,而您可以執行此操作。 這是一種通用方法,不限於JBoss。 但這也是很多工作,只有真正需要DynamicMBean的動態功能時(IMO)才有意義。
為了完整性起見(這可能是更簡單的方法):
您可以編寫一個xmbean-descriptor並將其放到$ SERVER / conf / xmdesc /中,此外,您還需要像這樣增強標准的MBeean-descriptor(請注意xmbean-dd
屬性:
<mbean code="org.jnp.server.NamingBeanImpl"
name="jboss:service=NamingBeanImpl"
xmbean-dd="resource:xmdesc/NamingBean-xmbean.xml">
</mbean>
該示例取自$ SERVER / conf / jboss-service.xml,NamingBean-xmban.xml位於屬性描述的路徑中。
我創建了一個小的包裝程序 ,它將通過注釋從普通的Java類中創建一個動態MBean。 使用它,您還可以為bean,屬性,操作和參數添加描述。
它還使用Java ResourceBundles支持名稱和描述的外部化和本地化。
帶注釋的類的示例:
@JMXBean(description = "My first JMX bean test")
public class MyBean {
int level = 0;
@JMXBeanAttribute(name = "Floor Level", description = "The current floor level")
public int getLevel() {
return level;
}
@JMXBeanAttribute
public void setLevel(int newLevel) {
level = newLevel;
}
@JMXBeanOperation(name = "Echo Test", description = "Echoes the parameter back to you")
public String myMethod(
@JMXBeanParameter(name = "Input", description = "String of what to echo") String param) {
return "You said " + param;
}
}
使用ResourceBundles的帶注釋類的示例:
@JMXBean(resourceBundleName="com.example.my.package.BundleName")
public class MyBean {
int level = 0;
@JMXBeanAttribute(nameKey="level", descriptionKey="levelDescription")
public int getLevel() {
return level;
}
}
如何使用它:
MyBean bean = new MyBean();
JMXBeanWrapper wrappedBean = new JMXBeanWrapper(bean);
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
mbs.registerMBean(wrappedBean, new Objectname("com.example.my.package:type=TestBean,name=My Bean"));
您可以在GitHub上找到源
我成功地混合了Spring XML和Spring批注,在這些批注中,我擁有多個相同Java類的MBean。 該方法允許對bean名稱進行嚴格控制,並允許我在類級別定義描述等。 我需要為MBeanExporter定義基於注釋的Bean匯編器,並提供Bean名稱和Bean引用的映射:
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter"
lazy-init="false">
<property name="server" ref="mbeanServer" />
<property name="assembler">
<!-- will create management interface using annotation metadata -->
<bean class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
<property name="attributeSource">
<bean class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource"/>
</property>
</bean>
</property>
<property name="beans">
<map>
<!-- entries -->
</map>
</property>
</bean>
我從Java注釋中讀取的示例可能是:
@ManagedAttribute(description = "A detailed description to show in JConsole tooltips etc")
public String getFoo() {
return foo;
}
我已經為出口商私下定義了匯編程序,但是我敢肯定,您可以更廣泛地共享這些bean。
順便說一句,這是在Tomcat上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.