我正在使用JBoss 4.3.2.GA
我已经为我的MBean服务添加了方法。方法在签名中有几个参数。它工作正常,但我想要更多。
问题:当我在jmx-console中看到方法签名时,我不知道每个输入字段的含义,因为jmx-console不显示参数名称,只显示值的输入字段。
是否有能力添加每个参数的描述(在Java代码中,而不是xml),允许在JBOSS的jmx-console中显示此描述?
我尝试使用Spring注释:@ManagedOperation
至少添加方法描述但没有结果(jmx-console中没有显示描述)。
可能有人解决了这个问题...
答案 0 :(得分:3)
在Java中,如果不使用标准MBean,则可以执行此操作,例如您需要实现DynamicMBean
的{{1}},它将返回所有数据。
这是一种通用方式,不仅限于JBoss。但它也是很多工作,如果你真的需要DynamicMBean的动态功能,它(IMO)才有意义。
为了完整起见(并且这可能是更简单的方法):
你可以写一个xmbean描述符并把它放在例如进入$ SERVER / conf / xmdesc /
除此之外,您需要像这样增强标准MBeean描述符(请注意getMBeanInfo()
属性:
xmbean-dd
此示例取自$ SERVER / conf / jboss-service.xml,NamingBean-xmban.xml位于属性描述的路径中。
答案 1 :(得分:2)
我创建了一个小wrapper,它将通过注释从普通的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
上找到来源答案 2 :(得分:1)
我已经成功地混合了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的。