`
longgangbai
  • 浏览: 7331646 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JMX中模型Mbean的学习应用

阅读更多

                    在网上看到JMX可以监控JBOSS,TOMCat,WebLogic等服务器主机的各种信息,所以学习一下JMX的。

采用模型MBean开发JMX。

首先开发对应相关的JMX模型bean类对象

package com.easyway.apache.moduler.jmx;
/**
 * 备注此处的JMX没有实现相关的XxxMBean的接口
 * @author longgangbai
 *
 */
public interface IEasywayService {

	public abstract void printHello();

	public abstract void printHello(String whoName);

}

 

package com.easyway.apache.moduler.jmx;
/**
 * 备注此处的JMX没有实现相关的XxxMBean的接口
 * @author longgangbai
 *
 */
public class EasywayService implements IEasywayService {

	private String serviceName;

	public String getServiceName() {
		return serviceName;
	}

	public void setServiceName(String serviceName) {
		this.serviceName = serviceName;
	}

	/* (non-Javadoc)
	 * @see com.easyway.apache.moduler.jmx.IEasywayService#printHello()
	 */
	public void printHello() {
		System.out.println("Hello World, " + serviceName);
	}

	/* (non-Javadoc)
	 * @see com.easyway.apache.moduler.jmx.IEasywayService#printHello(java.lang.String)
	 */
	public void printHello(String whoName) {
		System.out.println("Hello , " + serviceName);
	}

}

 创建构建模型MBean对象

package com.easyway.apache.moduler.jmx;

import javax.management.MBeanOperationInfo;
import javax.management.MBeanParameterInfo;
import javax.management.modelmbean.ModelMBeanAttributeInfo;
import javax.management.modelmbean.ModelMBeanInfo;
import javax.management.modelmbean.ModelMBeanInfoSupport;
import javax.management.modelmbean.ModelMBeanOperationInfo;
import javax.management.modelmbean.RequiredModelMBean;

/**
 * 创建ModelBean的各种信息
 * @author longgangbai
 * 
 *
 */
public class ModelMBeanUtils {
    private static final boolean READABLE = true;
    private static final boolean WRITABLE = true;
    private static final boolean BOOLEAN = true;
    private static final String STRING_CLASS = "java.lang.String";

    /**
     * 
     * @return
     */
    public static RequiredModelMBean createModlerMBean() {
        RequiredModelMBean model = null;
        try {
            model = new RequiredModelMBean();
            //注入相关的服务类
            model.setManagedResource(new EasywayService(), "ObjectReference");
            
            ModelMBeanInfo info = createModelMBeanInfo();
            model.setModelMBeanInfo(info);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return model;
    }

    /**
     * 创建ModelBean的过程
     * @return
     */
    private static ModelMBeanInfo createModelMBeanInfo() {
        //////////////////////////////////////////////////////////////////
        //                        属性                                        //
        //////////////////////////////////////////////////////////////////
        // 构造name属性信息
        ModelMBeanAttributeInfo nameAttrInfo = new ModelMBeanAttributeInfo(//
                "Name", // 属性名        
                STRING_CLASS, //属性类型     
                "people name", // 描述文字       
                READABLE, WRITABLE, !BOOLEAN, // 读写       
                null // 属性描述子
        );

        //////////////////////////////////////////////////////////////////
        //                        方法                                        //
        //////////////////////////////////////////////////////////////////
        //构造 printHello()操作的信息        
        ModelMBeanOperationInfo print1Info = new ModelMBeanOperationInfo(//
                "printHello", //
                null, //   
                null, //
                "void", //   
                MBeanOperationInfo.INFO, //     
                null //
        );

        // 构造printHello(String whoName)操作信息      
        ModelMBeanOperationInfo print2Info;
        MBeanParameterInfo[] param2 = new MBeanParameterInfo[1];
        param2[0] = new MBeanParameterInfo("whoName", STRING_CLASS, "say hello to who");
        print2Info = new ModelMBeanOperationInfo(//
                "printHello", //
                null,//
                param2,//
                "void", //
                MBeanOperationInfo.INFO, //
                null//
        );

        //////////////////////////////////////////////////////////////////
        //                        最后总合                                    //
        //////////////////////////////////////////////////////////////////
        // create ModelMBeanInfo        
        ModelMBeanInfo mbeanInfo = new ModelMBeanInfoSupport(//
                RequiredModelMBean.class.getName(), // MBean类
                null, // 描述文字      
                new ModelMBeanAttributeInfo[] { // 所有的属性信息(数组) 
                nameAttrInfo },//只有一个属性 
                null, // 所有的构造函数信息   
                new ModelMBeanOperationInfo[] { // 所有的操作信息(数组)
                        print1Info,
                        print2Info },//
                null, // 所有的通知信息(本例无)
                null//MBean描述子
        );
        return mbeanInfo;
    }
}


 

 

创建JMX中模型MBean的Agent代理对象

package com.easyway.apache.moduler.jmx;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import javax.management.modelmbean.RequiredModelMBean;

import com.sun.jdmk.comm.HtmlAdaptorServer;
/**
 * JMX代理测试ModelBean的应用
 * @author longgangbai
 * 
 * 备注:
 * 模型Mbean(Model MBean):动态可以配置
 * 动态bean
 * 标准MBean(standard mbean):
 *
 */
public class EasywayServiceModelBeanAgent {
	

	    public static void main(String[] args) throws Exception {
	    	MBeanServer server = MBeanServerFactory.createMBeanServer();
	        ObjectName helloName = new ObjectName("easyway:name=HelloWorld");
	        //获取测试bean的信息
	        RequiredModelMBean hello = ModelMBeanUtils.createModlerMBean();
	        //注册MBean对象
	        server.registerMBean(hello, helloName);
	        //获取对象的
	        ObjectName adapterName = new ObjectName("EasywayServiceModelBeanAgent:name=htmladapter,port=8082");
	        HtmlAdaptorServer adapter = new HtmlAdaptorServer();
	       //注册
	        server.registerMBean(adapter, adapterName);
	        adapter.start();
	        System.out.println("start.....");

	    }
	}

 

分享到:
评论

相关推荐

    JMX 在GlassFish中的应用

    总之,JMX与AMX的结合为Java开发者提供了一套强大而灵活的工具集,使得在复杂的企业级应用中实施管理和监控策略变得既简单又高效。无论是对于应用的日常运维还是故障排查,JMX和AMX都扮演着不可或缺的角色。

    论文研究-JMX技术在网络监控中的应用.pdf

    MBean分为标准MBean、动态MBean、开放MBean和模型MBean等不同类型,它们分别适用于不同的监控和管理场景。 JMX技术的另一个重要概念是通知。通知是JMX框架用来实现异步通信的一种机制。当MBean的某个属性发生变化,...

    书籍JMX-IN-ACTION

    接着,书中的章节详细讲述了如何创建自定义MBean,包括标准MBean、开放MBean和模型MBean的不同类型,以及它们的注册和管理过程。此外,书中还讨论了MBean服务器的选择和配置,如内置MBean服务器和远程MBean服务器的...

    JMX小例子以及介绍

    在实际应用中,JMX常用于监控复杂的系统和服务,如Spring框架就利用JMX暴露其内部管理接口。例如,你可以通过JMX监控和调整Spring应用上下文中的bean。 **5. 结论** JMX为Java开发者提供了一种强大且灵活的工具,...

    jmx资料

    JMX是Java平台的标准接口,通过它可以管理运行中的Java应用程序。它提供了一种灵活的模型来表示管理对象(MBeans),这些对象可以代表任何可管理的实体,如系统资源、服务状态或应用程序性能指标。JMX还定义了管理...

    jmx监控weblogic,tomcat,websphere源码

    在本项目中,"jmx监控weblogic,tomcat,websphere源码"涉及了使用JMX来监控三个主流的Java应用服务器:WebLogic、Tomcat和WebSphere。这些服务器都是企业级应用部署的常见选择,对它们的监控对于确保系统性能、稳定性...

    JMX应用技术架构系统(包括具体开发说明)

    本文档详细阐述了JMX在实际应用中的作用,特别是MX4J在分布式应用监控中的实现方法。 ### 1.2 关键词 JMX,MX4J,分布式监控,管理框架,MBean ### 1.3 参考资料 - Oracle官方JMX文档 - MX4J项目官方网站 - Java...

    jmx 入门文档,附有开发实例文档

    JMX 提供了一种框架和API来监控和管理运行时的应用程序,使得开发者可以轻松地添加管理功能到他们的应用中。 **什么是MBean?** MBean(Managed Bean)是JMX的核心概念,它代表了一个可管理的资源,通常是一个Java...

    jmx学习整理里1

    接下来,我们将深入探讨JMX的核心概念、MBean的类型以及如何在实际应用中使用JMX。 首先,MBean是JMX的核心组件,它是被管理的Java对象。根据不同的需求和复杂性,MBean可以分为三种类型: 1. Standard MBeans:这...

    JMX HelloWorld Download

    **标题解析:** "JMX HelloWorld Download" 指的是一个关于Java Management Extensions(JMX)的简单示例,可能是用于教学或演示如何在Java应用中使用JMX技术。"Download"表明这是一个可以下载的资源,可能包含了...

    jmx.rar_jmx

    同时,JMX API提供了客户端和服务器端的实现,方便开发者集成到自己的应用中。 8. **应用场景**:JMX常用于服务器监控、性能分析、日志管理、配置管理等方面。例如,Web服务器、数据库服务器、EJB容器等都可以通过...

    jmx_in_action随书源码

    通过这些源码,读者可以深入学习JMX的实际应用,了解如何在实际项目中使用JMX来提升系统的可管理性和可维护性。然而,由于技术的更新迭代,部分源码可能已不适用于最新的Java版本,因此在实践中需要注意兼容性问题,...

    JMX1.4规范中文版

    JMX,全称为Java管理扩展(Java Management Extensions),是一套用于管理Java应用程序的开放标准和API,它允许开发...通过本规范的学习,开发者可以更好地理解和应用JMX,从而在维护和管理Java应用时更加得心应手。

    jmxri.jar和jmxtools.jar 1.2.1

    MBean可以是标准MBean、模型MBean或开放MBean,它们通过实现特定接口或使用特定注解来暴露其属性、操作和通知。 - **MBean Server**:MBean Server是JMX架构的核心,负责管理MBean的生命周期,包括创建、注册、查找...

    jmx1.4规范.pdf

    通过 JMX 1.4 规范的学习,开发者不仅可以更好地理解和应用 JMX 技术,还可以将其应用于实际项目中,实现对 Java 应用程序和系统的有效监控与管理。随着 JMX 技术的发展,未来的版本可能会提供更多强大的功能,帮助...

    JMX开发入门

    Java Management Extensions(JMX)是...例如,Spring框架提供了对JMX的集成支持,简化了在Spring应用中使用JMX的复杂性。总的来说,JMX因其灵活性、标准化和广泛的生态系统支持,成为了Java环境中不可或缺的管理工具。

    面试官问我 JMX 了解不,我说:什么? - 知乎1

    在实际应用中,JMX客户端(如管理工具)可以通过JMX连接器(JMX Connector)与服务器端建立连接,访问和操作MBean,实现对Java应用程序的远程监控和管理。例如,JConsole和VisualVM提供了图形化的界面,用户可以直观...

    JVM JMX java

    1. **MBeans**:MBeans是JMX的核心,可以是标准MBean、开放MBean或模型MBean,它们提供了管理接口。 2. **MBean服务器**:所有MBeans都存在于MBean服务器中,这是一个容器,负责MBean的生命周期管理。 3. **JMX...

    JMX入门的好资料啊

    学习JMX有助于开发者在遇到性能问题时进行诊断,或者在生产环境中实施自动化运维策略。例如,你可以使用JMX监控内存使用情况、线程状态,甚至触发某些操作,如重启服务或更新配置。 总的来说,JMX是一个强大的工具...

    论文研究-基于JMX的网络管理系统.pdf

    JMX技术已经广泛应用于各种Java应用服务器和中间件产品中,例如JBoss、Tomcat以及Sun的Java系统管理工具等,它们提供了内置的JMX支持,方便用户进行各种管理操作。 总之,JMX作为一种现代的、强大的网络管理技术,...

Global site tag (gtag.js) - Google Analytics