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.

  • 相关阅读:
    The formatter threw an exception while trying to deserialize the message in WCF
    通过Web Deploy方式部署WCF
    The Managed Metadata Service or Connection is currently not available
    How to create Managed Metadata Column
    冒泡算法
    asp.net core 实战项目(一)——ef core的使用
    Vue学习笔记入门篇——安装及常用指令介绍
    Vue学习笔记入门篇——数据及DOM
    Vue学习笔记目录
    Chart.js在Laravel项目中的应用
  • 原文地址:https://www.cnblogs.com/davidwang456/p/3253626.html
Copyright © 2011-2022 走看看