Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux系统 > » 正文

JMX技术基础(2)

来源: 未知 分享至:

JavaSE 6平台中,可以通过调用ManagementFactory.getPlatformMBeanServer()来获取到一个MBean Server,然后向其中注册实现好的MBean资源,就能够通过JMX进行管理。

查找本地的MBean Server(如果没有找到,会自动创建一个),有关如何查找以及可能需要创建,可以通过ManagementFactory.getPlatformMBeanServer()的代码来实现跟踪。示例如下所示:

  1. package org.shirdrn.java.jmx.standardmbean;  
  2.   
  3. import java.lang.management.ManagementFactory;  
  4.   
  5. import javax.management.InstanceAlreadyExistsException;  
  6. import javax.management.MBeanRegistrationException;  
  7. import javax.management.MBeanServer;  
  8. import javax.management.MalformedObjectNameException;  
  9. import javax.management.NotCompliantMBeanException;  
  10. import javax.management.ObjectName;  
  11.   
  12. public class MyJMX {  
  13.   
  14.     private static MBeanServer mBeanServer = null;  
  15.     static {  
  16.         if(mBeanServer==null) {  
  17.             mBeanServer = ManagementFactory.getPlatformMBeanServer();  
  18.         }  
  19.     }  
  20.   
  21.     public void register(Object objectMBean, ObjectName objectName)  
  22.             throws InstanceAlreadyExistsException, MBeanRegistrationException,  
  23.             NotCompliantMBeanException {  
  24.         mBeanServer.registerMBean(objectMBean, objectName);  
  25.     }  
  26.   
  27.     public static void main(String[] args) throws InterruptedException,  
  28.             InstanceAlreadyExistsException, MBeanRegistrationException,  
  29.             NotCompliantMBeanException, MalformedObjectNameException,  
  30.             NullPointerException {  
  31.         MyJMX jmx = new MyJMX();  
  32.         String objectNameString = \"mydomain:mykey=MyObjectMBean\";  
  33.         ObjectName objectName = new ObjectName(objectNameString);  
  34.         MyObjectMBean myObjectMBean = new MyObject(299999007\"shirdrn\");  
  35.         jmx.register(myObjectMBean, objectName);  
  36.   
  37.         Object lock = new Object();  
  38.         synchronized (lock) {  
  39.             lock.wait();  
  40.         }  
  41.     }  
  42. }  

在启动参数中,需要设置-Dcom.sun.management.jmxremote选项,表示可以通过远程进行管理。

3、远程管理层

我们要管理应用系统的某些资源,是通过代理层来间接实现管理,那么在与代理层之间交互最为直接,所以远程远程管理层定义了我们通过什么方式来与MBean Server进行交互,如基于何种协议、怎样建立连接才能通过远程手段在MBean Server的JVM之外进行访问,从而实现管理和监控,例如基于JMXMP、RMI等。

所以,远程管理层最重要的两个组件就是协议适配器和连接器。

Sun公司实现了一个基于JMXMP协议的工具JConsole,可以通过JConsole来方便地进行调试。启动JConsole后,可以通过本地进程或远程进程来进行远程管理。

例如,创建一个基于RMI协议的连接器,示例如下:

  1. String serviceURL = \"service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi\";  
  2.         JMXServiceURL url = new JMXServiceURL(serviceURL);  
  3.         JMXConnectorServer connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbeanServer);  

参考链接:

http://download.oracle.com/javase/6/docs/technotes/guides/jmx/index.html


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史