HelloWorldDynamic

package mbeanTest;

import java.lang.reflect.Method;

import javax.management.Attribute;
import javax.management.AttributeList;
import javax.management.AttributeNotFoundException;
import javax.management.DynamicMBean;
import javax.management.InvalidAttributeValueException;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanException;
import javax.management.MBeanInfo;
import javax.management.MBeanOperationInfo;
import javax.management.ReflectionException;

public class HelloWorldDynamic implements DynamicMBean
{
    public String hello;

    public HelloWorldDynamic()
    {
        this.hello = "Hello World! I am a Dynamic MBean";
    }

    public HelloWorldDynamic(String hello)
    {
        this.hello = hello;
    }

    public String getHello()
    {
        return hello;
    }

    public Object getInstance()
    {
        return new Object();
    }

    public void setHello(String hello)
    {
        this.hello = hello;
    }

    @Override
    public Object getAttribute(String attribute)
            throws AttributeNotFoundException, MBeanException,
            ReflectionException
    {
        // 设置getAttribute的执行逻辑
        if ("getInstance".equals(attribute))
        {
            return getInstance();
        }
        if("gh".equals(attribute))
        {
            return "fffffff";
        }

        return null;
    }

    @Override
    public AttributeList getAttributes(String[] attributes)
    {
        // TODO Auto-generated method stub
        return null;
    }

    MBeanInfo info = null;

    @Override
    public MBeanInfo getMBeanInfo()
    {
        try
        {
            Class cls = this.getClass();
            // 用反射获得 "getHello" 属性的读方法
            // DynamicMBean中,
            Method readMethod = cls.getMethod("getHello", new Class[0]);
            MBeanAttributeInfo attribute = new MBeanAttributeInfo("gh",
                    " the first attribute ", readMethod, null);
            // 执行java类的method需要的一些元数据,由MBeanOperationInfo提供
            MBeanOperationInfo operation = new MBeanOperationInfo(
                    " the first operation ", cls.getMethod("getInstance", null));
            info = new MBeanInfo(cls.getName(), " this is a dynamic MBean ",
                    new MBeanAttributeInfo[]
                    { attribute }, null, new MBeanOperationInfo[]
                    { operation }, null);
        } catch (Exception e)
        {
            System.out.println(e);
        }
        return info;
    }

    @Override
    public Object invoke(String actionName, Object[] params, String[] signature)
            throws MBeanException, ReflectionException
    {
        System.out.println(" the HelloWorldDynamic‘s method invoke  ");
        return null;
    }

    @Override
    public void setAttribute(Attribute attribute)
            throws AttributeNotFoundException, InvalidAttributeValueException,
            MBeanException, ReflectionException
    {

    }

    @Override
    public AttributeList setAttributes(AttributeList attributes)
    {
        return null;
    }

}   
时间: 2024-10-07 10:35:16

HelloWorldDynamic的相关文章

JmxTest

package mbeanTest; import java.util.Set; import javax.management.Attribute; import javax.management.MBeanOperationInfo; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import javax.management.Notification; import java