zoukankan      html  css  js  c++  java
  • 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;
        }
        
        
        
        
    }   
  • 相关阅读:
    视图和同义词的区别
    【MooTools】自定义滚动条小插件
    有理想的程序员必须知道的15件事
    革新:.NET 2.0的自定义配置文件体系初探
    我的2006年学习计划
    为ASP.NET 2.0配置数据源
    通用异常处理框架
    泛型的序列化问题
    实战SVN For Apache2(二)
    LightningFramework系列(一、初步总架构图)
  • 原文地址:https://www.cnblogs.com/wangyonglong/p/7427184.html
Copyright © 2011-2022 走看看