启动jmx server 和jmx client,通过jconsole进入jmx server

然后通过其中远程进程,进入jmx client:

发现,两者可用的tab页不同, MBean的数量类型也不同:

如何理解呢?其实原因就是两者的MBeanServer不同, 前者是jmx自带的,后者是我new出来的。

访问JMImplementation 看看:

ObjectName jmxname = new ObjectName("JMImplementation:type=MBeanServerDelegate");
            javax.management.MBeanServerDelegateMBean jmxMBean = JMX.newMXBeanProxy(connection, jmxname ,
              javax.management.MBeanServerDelegateMBean.class);
   String notificationInfo = jmxMBean.getSpecificationName();
   System.out.println(notificationInfo);
//   for (int i = 0; i < notificationInfo.length; i++) {
//    System.out.println(notificationInfo.toString());
//   }

不过却不能访问jmx server的MBean。。

即使在jmx server端访问,也是失败

Hashtable<String, String> aa = new Hashtable<String, String>();
   aa.put("type", "MemoryPool");
   aa.put("name", "PS Eden Space");
   ObjectName memoryPoolMXBeanName  = new ObjectName("java.lang",aa );
   
         MemoryPoolMXBean memoryPoolMXBean = JMX.newMXBeanProxy(connection, memoryPoolMXBeanName ,
           MemoryPoolMXBean.class);
        
         MemoryType type = memoryPoolMXBean.getType();
         System.out.println(type);

二月 16, 2014 3:21:15 下午 sun.rmi.server.UnicastServerRef logCallException
FINE: RMI TCP Connection(2)-127.0.0.1: [127.0.0.1] exception:
javax.management.InstanceNotFoundException: java.lang:name=PS Eden Space,type=MemoryPool
 at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095)
 at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:643)
 at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:668)

。。。

原因: 此时的connection不是通往jmx server的connection、JMXConnectorServer,应该

通过MBeanServer platformMBeanServer = ManagementFactory.getPlatformMBeanServer();然后创建 JMXConnectorServer

或者可以通过ManagementFactory 访问:

List<MemoryPoolMXBean> memoryPoolMXBeans = ManagementFactory.getMemoryPoolMXBeans();
        for (Iterator iterator = memoryPoolMXBeans.iterator(); iterator
    .hasNext();) {
     MemoryPoolMXBean memoryPoolMXBean = (MemoryPoolMXBean) iterator.next();
     System.out.println(memoryPoolMXBean.getName());
  

  }

可见, 如果要访问jmx server内部的mbean(这些都可以理解为PlatformMBean 或者PlatformManagedObject),则需要使用ManagementFactory (静态类)

此外,这个类提供了静态方法访问jmx server的已注册的mbean 等方法,getPlatformManagementInterfaces等是前者抽象了的特殊方法:

Set<Class<? extends PlatformManagedObject>> set = ManagementFactory.getPlatformManagementInterfaces();
        for (Class<? extends PlatformManagedObject> class1 : set) {
   System.out.println(class1.getName());
  }

MBeanServer platformMBeanServer = ManagementFactory.getPlatformMBeanServer();
  ObjectName name = new ObjectName("JMImplementation:type=MBeanServerDelegate");
  MBeanInfo beanInfo = platformMBeanServer.getMBeanInfo(name );
  MBeanAttributeInfo[] attributes = beanInfo.getAttributes();
  for (int i = 0; i < attributes.length; i++) {
   MBeanAttributeInfo beanAttributeInfo = attributes[i];
   System.out.println(beanAttributeInfo.getName());
  }

jmx server 和jmx client的更多相关文章

  1. 解决:安装SQL Server 2008 Native Client遇到错误(在Navicat premium新建sqlserver连接时 需要):An error occurred during ...HRESULT: 0x80070422(注意尾部的错误号)

    解决:安装SQL Server 2008 Native Client遇到错误(在Navicat premium新建sqlserver连接时 需要):An error occurred during . ...

  2. 在socket的server端处理client端发来的数据

    一.楔子 最近做了一个需求遇到一个坑,归结成一个小问题,其实就是在socket的server端处理client端发来的数据的问题,现将这个问题总结一下,本文将数据在server端以字典的形式存储. 另 ...

  3. 用同一台PC的两个网口实现Iperf的server端和client端

    用同一台PC的两个网口实现Iperf的server端和client端 2015年10月20日 20:35:11 阅读数:2943 有时候需要发包,仅仅需要一定速率的流量,并不需要关心收到报文的大小,一 ...

  4. 【翻译自mos文章】在RHEL7/OL7上安装Oracle 12.1.0.2的server端或者client时,报须要&quot;compat-libstdc++&quot;包

    在RHEL7/OL7上安装Oracle 12.1.0.2的server端或者client时,报须要"compat-libstdc++"包 来源于: Installation of ...

  5. 【Tech】CAS多机部署Server和Java Client端

    昨天尝试把cas的java client端部署到另外一台机器,结果就有问题了.(localhost部署cas server和java client端参见:http://www.cnblogs.com/ ...

  6. sql server 安装出现需要sqlncli.msi文件,错误为 microsoft sql server 2012 native client

    在安装sql server 2017 时出现 弹框标题为  microsoft sql server 2012 native client  内容为需要sqlncli.msi文件 去本地目录找本身的那 ...

  7. Server Tracking of Client Session State Changes Connection Management

    MySQL :: MySQL 8.0 Reference Manual :: 5.1.12 Connection Management https://dev.mysql.com/doc/refman ...

  8. nginx反向代理cas-server之2:生成证书,centOS下使用openssl生成CA证书(根证书、server证书、client证书)

    前些天搭好了cas系统,这几天一致再搞nginx和cas的反向代理,一直不成功,但是走http还是测试通过的,最终确定是ssl认证证书这一块的问题,原本我在cas服务端里的tomcat已经配置了证书, ...

  9. swoole深入学习 2. tcp Server和tcp Client

    这节来学习Swoole最基础的Server和Client.会通过创建一个tcp Server来讲解. server <?php class Server { private $serv; pub ...

随机推荐

  1. appium踩过的坑(1):NoClassDefFoundError

    1.引入jar包错误导致的错误: 引入的jar包引起的 应该引入下面的jar包

  2. Java 类反射机制分析

    Java 类反射机制分析 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某 ...

  3. easyUI的formatter使用

    <table class="easyui-datagrid" style="width:400px;height:250px" data-options= ...

  4. IP地址框

    //IP地址框 // 此段代码:独立的获取本机IP地址和计算机名 WORD wVersionRequested; WSADATA wsaData; char name[255]; CString ip ...

  5. px4flow通过iic读取具体寄存器数据程序

    底层通信用了昨天写好的iic,今天结合官方资料成功读出所有指定寄存器的数据附上源码 include.h主要包括了一些stm32 IO控制的宏定义,具体参考正点原子所有例程中都有的sys.h头文件 in ...

  6. visual studio 2005 常用按键

    VS2005 实用快捷键,迅速提高代码编写效率! 代码快捷键   Ctrl+J / Ctrl+K,L   列出成员   Ctrl+Shift+空格键 / Ctrl+K,P   参数信息   Ctrl+ ...

  7. javascript中array常用属性方法

    属性: length 表示一个无符号 32-bit 整数,返回一个数组中的元素个数. 截短数组..截短至长度2  则:   .length = 2 方法: Array.from() 方法可以将一个类数 ...

  8. 在Ubuntu下配置舒服的Python开发环境

    Ubuntu 提供了一个良好的 Python 开发环境,但如果想使我们的开发效率最大化,还需要进行很多定制化的安装和配置.下面的是我们团队开发人员推荐的一个安装和配置步骤,基于 Ubuntu 12.0 ...

  9. 不常用的toLocaleString()方法

    在javascript中所有的对象都具有toLocaleString().toString()和valueOf()方法. 其中,很多情况调用toString()和valueOf方法会返回相同的值,但是 ...

  10. AutoLayout - VFL

    其实很早就像整理出一份VFL的总结出来,觉得有很多东西可以写,但是真正去总结的时候发现,VFL也并没有很多东西,其实应该是在布局的过程中直接用VFL语句思考的过程比较难以形成,多数布局问题其实是在实际 ...