`
damies
  • 浏览: 238526 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[JMX一步步来] 8、编写程序来连接MBean

阅读更多
前面用Html、jconsole等方法连接上了MBeanServer,并能够通过这些界面来操纵MBean。但有时我们需要不借助这些客户端,而是在自己的程序来操纵这些MBean,这就要求我们知道如何在代码里连接MBean。
 
  基于上一篇为jconsole而修改的例子,给出一个示例的客户端程序,基本的操作都有了:
java 代码
  1. import java.util.Iterator;   
  2. import java.util.Set;   
  3. import javax.management.Attribute;   
  4. import javax.management.MBeanInfo;   
  5. import javax.management.MBeanServerConnection;   
  6. import javax.management.MBeanServerInvocationHandler;   
  7. import javax.management.ObjectInstance;   
  8. import javax.management.ObjectName;   
  9. import javax.management.remote.JMXConnector;   
  10. import javax.management.remote.JMXConnectorFactory;   
  11. import javax.management.remote.JMXServiceURL;   
  12. public class Client {   
  13.     public static void main(String[] args) throws Exception {      
  14.         JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");      
  15.         JMXConnector jmxc = JMXConnectorFactory.connect(url, null);       
  16.         MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();     
  17.         ObjectName mbeanName = new ObjectName("chengang:name=HelloWorld");   
  18.         // 把所有Domain都打印出来   
  19.         System.out.println("Domains:---------------");      
  20.         String domains[] = mbsc.getDomains();       
  21.         for (int i = 0; i < domains.length; i++) {       
  22.             System.out.println("\tDomain[" + i + "] = " + domains[i]);    
  23.         }   
  24.         // MBean的总数   
  25.         System.out.println("MBean count = " + mbsc.getMBeanCount());   
  26.         // 对name属性的操作(属性名的第一个字母要大写)   
  27.         mbsc.setAttribute(mbeanName, new Attribute("Name""PANDA"));// 设值   
  28.         System.out.println("Name = " + mbsc.getAttribute(mbeanName, "Name"));// 取值   
  29.         // 得到proxy代理后直接调用的方式   
  30.         HelloMBean proxy = (HelloMBean) MBeanServerInvocationHandler.newProxyInstance(mbsc, mbeanName, HelloMBean.classfalse);        
  31.         proxy.printHello();        
  32.         proxy.printHello("Raymend");   
  33.         // 远程调用的方式   
  34.         mbsc.invoke(mbeanName, "printHello"nullnull);         
  35.         mbsc.invoke(mbeanName, "printHello"new Object[] { "熊猫烧香" }, new String[] { String.class.getName() });   
  36.         // 得mbean的信息   
  37.         MBeanInfo info = mbsc.getMBeanInfo(mbeanName);         
  38.         System.out.println("Hello Class: " + info.getClassName());      
  39.         System.out.println("Hello Attriber:" + info.getAttributes()[0].getName());     
  40.         System.out.println("Hello Operation:" + info.getOperations()[0].getName());   
  41.         // 得到所有的MBean的ObjectName   
  42.         System.out.println("all ObjectName:---------------");        
  43.         Set set = mbsc.queryMBeans(nullnull);       
  44.         for (Iterator it = set.iterator(); it.hasNext();) {        
  45.             ObjectInstance oi = (ObjectInstance) it.next();        
  46.             System.out.println("\t" + oi.getObjectName());        
  47.             }   
  48.         // 注销   
  49.         // mbsc.unregisterMBean(mbeanName);   
  50.         // 关闭MBeanServer连接   
  51.         jmxc.close();     
  52. }   
  53. }   
运行后的效果如下:
Domains:---------------
 Domain[0] = HelloAgent
 Domain[1] = JMImplementation
 Domain[2] = chengang
MBean count = 3
Name = Chen.Gang
Hello Class: mbean.connector.Hello
Hello Attriber:Name
Hello Operation:printHello
all ObjectName:---------------
 chengang:name=HelloWorld
 JMImplementation:type=MBeanServerDelegate
 HelloAgent:name=htmladapter,port=8082
 
 
它有两个Console输出,这里是另一个
Hello World, PANDA
Hello ,  熊猫
Hello World, PANDA
Hello , 熊猫烧香
分享到:
评论

相关推荐

    jmx 实例 rmi mbean

    Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、操作系统和网络设备等资源。它提供了一种灵活的框架,允许开发者创建、注册和管理名为Managed Beans(MBeans)的对象,这些...

    JMX实用例子详解(包括各种Mbean)

    8. **连接器API(JMX Connectors)**:RMI和JMX Remoting接口的使用,以及如何配置JMX连接器服务器。 在"jmx_examples"压缩包中,可能包含了以上各个方面的代码示例,通过这些示例,读者可以更直观地理解和应用JMX...

    Java分布式应用学习笔记09JMX-MBean的介绍

    通常情况下,开发者只需要编写一个普通的JavaBean(POJO),然后将其注册为MBean,就能实现资源的管理和监控。 示例: ```java public class ServerImpl { public final long startTime; public ServerImpl() { ...

    JMX学习——一步步来

    【JMX学习——一步步来】 JMX,全称为Java Management Extensions,是一个用于植入管理功能到Java应用程序的框架。它提供了一套标准的接口和服务,使得开发者可以在任何Java应用中实现管理和监控。对于初学者来说,...

    JMX(一)-------MBean server

    总的来说,JMX和MBean Server提供了一种标准、灵活的管理方式,使得Java应用的管理和监控变得更加便捷。通过结合Spring框架,开发者可以更轻松地在应用中集成JMX功能,实现对应用的全方位管理。

    jmx mbean学习 jmxtools下载

    JMX 1.2.1 Reference Implementation(重点) Include com.sun.jdmk.comm.HtmlAdaptorServer class http://www.sun.com/software/jdmk/ Downloads, sun-jdmk-runtime-5.1-b34.2.zip/SUNWjdmk/5.1/lib/jdmkrt.jar

    JMX 连接工具 Eclipse 插件

    Eclipse 插件"JMX 连接工具"为开发者提供了一个便捷的途径,通过集成的开发环境来连接并管理JMX服务端,从而实现远程或本地的应用程序监控。 首先,JMX客户端连接信息是理解如何与JMX服务端建立通信的关键。JMX...

    JMX以RMI方式连接的场景示例

    JMX以RMI方式连接的场景示例 JMX(Java Management Extensions)是一种Java技术,用于管理...JMX框架提供了一种灵活、可扩展和高效的方式来管理和监控应用程序,而RMI连接方式允许远程客户端访问MBean提供的管理功能。

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

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

    JMX一步一步来,快速学会开发JMX应用

    【JMX 一步步来】 JMX(Java Management Extensions)是一个用于在Java应用程序中添加管理和监控功能的框架。它提供了一套标准的接口和服务,使得开发者能够轻松地在Java应用中集成管理和监控的能力。JMX的核心概念...

    使用RMI远程连接JVM.用JMX获取JVM的参数

    然后,客户端通过RMI连接到服务器的JMX代理,使用JMX API来查询或操作MBean。例如,你可以获取内存使用情况、线程状态、垃圾回收器信息等。在实际应用中,这有助于进行性能监控、故障排查和资源优化。 在开发过程中...

    JMX HelloWorld Download

    8. **使用与实践**:学习这个示例可以帮助开发者了解如何在实际项目中利用JMX来增强应用程序的管理和监控能力。 总之,"JMX HelloWorld Download"是一个学习JMX基础的实用资源,通过解压并研究其中的源代码,可以...

    《jmx技术介绍》配套源代码

    《JMX技术介绍》一书显然是为了深入探讨这一技术而编写的,配套源代码则提供了实践示例,帮助读者更好地理解和应用JMX。 1. JMX架构: JMX架构由管理代理(MBeans)、服务提供者接口(MBean Server)和管理客户端...

    JMX小例子以及介绍

    Java Management Extensions(JMX)是Java平台上的一个标准...通过理解MBean、MBean Server和连接器的工作原理,以及如何编写和使用JMX代码,我们可以更好地控制和优化我们的应用程序,提升系统的可维护性和稳定性。

    jmx三种访问方式

    Java Management Extensions(JMX)是Java平台中用于管理和监控应用程序、操作系统、网络设备等资源的一种标准框架。通过JMX,开发者可以创建管理代理(MBeans),这些代理暴露了各种管理特性,使得系统管理员可以...

    JMX官方文档 - 概览,入门,规范

    2. jconsole:JDK自带的图形化管理工具,通过JMX连接到目标应用程序,展示性能数据和MBean信息。 3. jinfo、jmap、jstack等命令行工具:利用JMX获取JVM相关信息。 六、JMX实战入门 创建一个简单的MBean,例如管理...

    jmx_examples.rar_Java 8_jmx_jmx examples_jmx main_jmx_examples

    Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、服务和设备。JMX允许开发者创建管理接口,以便对运行时的组件进行动态监控和管理。在这个"jmx_examples.rar"压缩包中,包含...

    jmx所需的jar

    它扩展了基本的JMX功能,使得管理者可以通过网络来连接到MBean服务器,执行操作、获取属性值或接收通知。这个版本可能包含了RMI(Remote Method Invocation)的实现,这是Java中常用的远程调用协议,用于实现JMX的...

Global site tag (gtag.js) - Google Analytics