如何向JMX MXBean添加描述

时间:2014-04-02 11:31:42

标签: jmx

我想在Apache-Tomcat 7.0上公开我的MXBeans。 虽然我的MXBean注册成功,但我无法向由MXBeans公开的操作添加描述。

注册MXBeans

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName m_mxbeanOName = new ObjectName( "MyMXBean:type=" + "MyComponent"+",name=MyMXBean");
MyMXBean m_mxbean = new MyMXBean ();
if(!mbs.isRegistered(m_mxbeanOName))
    mbs.registerMBean(m_mxbean,  m_mxbeanOName);

MyMXBean接口

public interface MyMXBean { 
    public int add (int x, int y);     
}

MyMXBean实施

import com.sun.org.glassfish.gmbal.Description;
import com.sun.org.glassfish.gmbal.DescriptorFields;
import com.sun.org.glassfish.gmbal.Impact;
import com.sun.org.glassfish.gmbal.ManagedOperation;

public class MyMXBeanImpl implements MyMXBean {
    @ManagedOperation(impact=Impact.ACTION_INFO)
    @Description("Integer Addition: First parameter is the augend and second parameter is the addend.")
    @DescriptorFields({"p1=augend","p2=addend"})
    public int add(int x, int y) { 
        return x + y; 
    }

注释@ManagedOperation,@ Description,@ DescriptorFields对jconsole没有影响。 JConsole继续显示默认值

请告诉我如何在JConsole上显示有关我的MXBean操作的说明。

2 个答案:

答案 0 :(得分:1)

我发现这样做最干净的方法是使用StandardMBean(或StandardEmitterMBean)作为您向JMX注册的实际对象。然后,继承StandardMBean并覆盖各种getDescription方法。在这些方法中,请阅读包含说明的注释。

答案 1 :(得分:0)

我发现这个非常好的blogentry包含@Descriptor和@Name属性的代码以及一个处理此问题的AnnotatedStandardMXBean包装。

http://actimem.com/java/jmx-annotations/

使用此示例MXBean:

  @MXBean
    @Description("A test resource")
    public interface SampleMXBean {
        @Description("string#1")
        String getString1();

        @Description("string#2")
        String getString2();

        @Description("string#3")
        String string3(@Description("int i") @Name("i") int i, @Description("long j") @Name("j") long j);
    }