zoukankan      html  css  js  c++  java
  • Java Management extentsions(jmx)与tomcat

    1,概念:一个可以使用JMX管理器来管理的Java对象称为JMX管理资源(JMX manageable resource)。事实上,一个JMX管理资源也可以是一个应用程序、一个实现或者一个服务、设备、用户等等。JMX管理资源用Java写或者提供一个Java包装。
    要想让一个Java对象称为JMX管理资源,必须创建另一个名为Managed Bean或者MBean的对象。org.apache.catalina.mbeans包包括一些MBeans。ConnectorMBean, StandardEngineMBean, StandardHostMBean, StandardContextMBean是Managed Bean的例子。从他们的名字你可以猜到ConnectMBean用于管理连接器,StandardContextMBean用于管理org.apache.catalina.core.StandardContext对象等等。当然,你也可以编写MBean管理多个Java对象。 MBean将Java对象的属性和方法暴露给管理应用程序(management application)。管理应用程序本身不能直接访问Java对象。因此可以选择任意的属性和方法让管理应用程序访问。

    一共有四种MBean:标准standard,动态dynamic, 打开open, 和模型model,从结构上来看,JMX规范分为3层,设备层(instrumentation level),代理层(agent level),和分布服务层(distributed services level)。MBean服务器处于代理层,而MBeans处于设备层。分布服务层将会在JMX规范的未来版本涉及到。

    2.标准MBean是最简单的MBean。要是用标准MBean管理一个Java对象,需要以下工作:
    · 创建一个接口,名为你的类名加上后缀MBean。例如,如果要管理的Java类是Car,接口名酒味CarMBean。

    · 修改Java类,让它实现你创建的接口。

    · 创建一个代理,该代理必须包括一个MBean服务器。

    · 为你的MBean创建一个ObjectName。

    · 初始化MBean服务器。

    · 向MBean服务器注册MBean。

    package ex20.pyrmont.standardmbeantest;
     public class Car { 
    private String color = "red"; 
    public String getColor() {
     return color; 
    } 
    public void setColor(String color) {
    this.color = color; 
    } 
    public void drive() {
     System.out.println("Baby you can drive my car.");
     } 
    }
    //1: The modified Car class 
    package ex20.pyrmont.standardmbeantest; public class Car implements CarMBean { private String color = "red"; public String getColor() { return color; } public void setColor(String color) { this.color = color; }

    public void drive() { System.out.println("Baby you can drive my car."); } }
    //2: The CarMBean interface 
    package ex20.pyrmont.standardmbeantest; 
    public interface CarMBean { 
    public String getColor(); 
    public void setColor(String color);
    public void drive(); 
    }
    //3: The StandardAgent class 
    package ex20.pyrmont.standardmbeantest; 
    import javax.management.Attribute;
    import javax.management.ObjectName; 
    import javax.management.MBeanServer; 
    import javax.management.MBeanServerFactory; 
    public class StandardAgent {
     private MBeanServer mBeanServer = null; 
    public StandardAgent() { 
    mBeanServer = MBeanServerFactory.createMBeanServer(); 
    } 
    
    public MBeanServer getMBeanServer() { 
    return mBeanServer; 
    } 
    
    public ObjectName createObjectName(String name) { 
    ObjectName objectName = null; 
    try { objectName = new ObjectName(name);
     } catch (Exception e) {
    } 
    return objectName; 
    }
    
     private void createStandardBean(ObjectName objectName, String managedResourceClassName) {
     try { 
    mBeanServer.createMBean(managedResourceClassName, objectName);
     } catch(Exception e) { 
    }
     } 
    
    public static void main(String[] args) {
     StandardAgent agent = new StandardAgent();
    MBeanServer mBeanServer = agent.getMBeanServer();
     String domain = mBeanServer.getDefaultDomain();
     String managedResourceClassName = "ex20.pyrmont.standardmbeantest.Car"; 
    ObjectName objectName = agent.createObjectName(domain + ":type=" + managedResourceClassName); 
    agent.createStandardBean(objectName, managedResourceClassName);
     // manage MBean
     try {
     Attribute colorAttribute = new Attribute("Color","blue"); mBeanServer.setAttribute(objectName, colorAttribute); 
    System.out.println(mBeanServer.getAttribute(objectName, "Color")); mBeanServer.invoke(objectName,"drive",null,null); } catch (Exception e) { e.printStackTrace(); } } }

    如果运行StandardAgent类,会得到以下输出。

    blue

    Baby you can drive my car.

  • 相关阅读:
    .NET中26个优化性能方法
    通过纯真IP地址实现根据用户地址显示信息
    jQuery中json中关于带有html代码网页的处理
    gb2312提交的url编码转换成utf8的查询
    c# Bitmap byte[] Stream 文件相互转换
    WebClient 上传文件
    进程监控模块配置与使用 ------ACE(开源项目)
    boost配置
    C++学习总结3
    SAE云平台的使用
  • 原文地址:https://www.cnblogs.com/davidwang456/p/3253626.html
Copyright © 2011-2022 走看看