• JMX初体验


          这些天在看《How Tomcat Works》这本书。里面讲到了JMX的内容。对我来说是个新知识点。

          JMX--Java Management Extensions,即Java管理扩展,是一个为应用程序、设备、系统等植入管理功能的框架。

    JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应

    用。可以非常容易的管理应用程序。许多基于服务器的应用程序(Tomcat, JBoss)都使用了JMX技术来管理各自的资源。

     
    1.Architectural Overview

    ■ Instrumentation level(设备层)---定义了编写可由JMX管理的资源的标准,也就是如果编写MBean。
    ■ Agent level(代理层)---定义了创建代理的规范。代理封装了MBean服务器,提供了处理MBean的服务。API提供了创建默认MBean服务器的方法。
    ■ Distributed services level(分布式服务层)
    ■ Additional management protocol APIs(附加管理协议API)

     

     

    2.MBean类型

    其灵活性由低到高:标准类型,动态类型,开放类型,模型类型。

    3.重要的类(在javax.management包及子包下)

    MBean服务器是MBeanServer接口的实例。可通过 MBeanServerFactory.createMBeanServer()创建。

    要将一个MBean注册到MBeanServer中,可以调用MBeanServer.registerMBean(Object o,ObjectName on)方法。

    ObjectName唯一标识MBean。ObjectName由域和键值对组成。如 domain: key1 = value1 , key2 = value2

    4.标准类型MBean演示

    1 package com.ling;
    2 
    3 public interface CarMBean {
    4      String getColor();
    5      void  setColor(String color);
    6      void drive();
    7      
    8 }
    View Code
     1 package com.ling;
     2 
     3 public class Car implements CarMBean {
     4 
     5     private String color = "red";
     6     @Override
     7     public String getColor() {
     8         // TODO Auto-generated method stub
     9         return color;
    10     }
    11 
    12     @Override
    13     public void setColor(String color) {
    14         // TODO Auto-generated method stub
    15         this.color = color;
    16     }
    17 
    18     @Override
    19     public void drive() {
    20         // TODO Auto-generated method stub
    21          System.out.println("baby drive my car");
    22     }
    23 
    24 }
    View Code
     1 package com.ling;
     2 
     3 
     4 public class StandarAgent {
     5      private MBeanServer mBeanServer = null;
     6      public StandarAgent( ){
     7          this.mBeanServer = MBeanServerFactory.createMBeanServer();
     8      }
     9      
    10      public MBeanServer getmBeanServer() {
    11          return mBeanServer;
    12      }
    13      public void setmBeanServer(MBeanServer mBeanServer) {
    14          this.mBeanServer = mBeanServer;
    15      }
    16      
    17      public ObjectName createObjectName(String name){
    18          ObjectName objectName = null;
    19          try {
    20             objectName = new ObjectName(name);
    21         } catch (MalformedObjectNameException e) {
    22             
    23             e.printStackTrace();
    24         } catch (NullPointerException e) {
    25             
    26             e.printStackTrace();
    27         }
    28         return objectName;
    29      }
    30      
    31      private void createStandarBean(ObjectName objectName,String managedClassName){
    32          try {
    33             mBeanServer.createMBean(managedClassName, objectName);
    34           } catch (Exception e) {
    35             
    36             e.printStackTrace();
    37         } 
    38      }
    39      
    40      public static void main(String [] args){
    41          StandarAgent agent = new StandarAgent();
    42          MBeanServer mBeanServer = agent.getmBeanServer();
    43          String managedClassName = "com.ling.Car";
    44          ObjectName objectName = agent.createObjectName("ling:type="+managedClassName);
    45          System.out.println(objectName.getDomain());
    46          agent.createStandarBean(objectName, managedClassName);
    47          
    48          try {
    49             Attribute colorAttribute = new Attribute("Color", "red");
    50             mBeanServer.setAttribute(objectName, colorAttribute);
    51             System.out.println(mBeanServer.getAttribute(objectName, "color"));
    52             mBeanServer.invoke(objectName, "drive", null, null);
    53             
    54         } catch (Exception e) {
    55             e.printStackTrace();
    56         }
    57      }
    58      
    59     
    60 }
    View Code
  • 相关阅读:
    Java学习之路(一)——JDK的下载与安装
    无法将“add-migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。解决方案
    VS2019只能提示选中首选项的快捷键切换
    Visual Studio空格变成点的快捷键切换
    Visual Studio 2019 打开即时窗口
    完全卸载node.js
    安装node.js和vue
    在后台启动Redis
    mysql的数据库优化方案
    hadoop
  • 原文地址:https://www.cnblogs.com/yuyutianxia/p/3230335.html
Copyright © 2020-2023  润新知