jmx实例

来源:互联网 发布:sql2000数据库安装 编辑:程序博客网 时间:2024/05/17 06:54

一共4个类,ServerMonitorAgent提供了3种连接方式,直接上例子,可以看出来jmx基于rmi

 

 

Java代码  收藏代码
  1. /** 
  2.  * @author river.wang 
  3.  */  
  4. public interface ServerMonitorMBean {  
  5.     public long getUptime();  
  6.     public String getMemory();  
  7. }  

 

 

Java代码  收藏代码
  1. /** 
  2.  * ServerMonitor只能比接口少"MBean"这5个字母,不能写为ServerMonitorImpl 
  3.  * @author river.wang 
  4.  */  
  5. public class ServerMonitor implements ServerMonitorMBean{  
  6.     private final long startTime;  
  7.     private Runtime runtime = Runtime.getRuntime();  
  8.     public ServerMonitor() {  
  9.         startTime = System.currentTimeMillis();  
  10.     }  
  11.     public long getUptime() {  
  12.         return System.currentTimeMillis()-startTime;  
  13.     }  
  14.     public String getMemory() {  
  15.         float freeMemory = (float)runtime.freeMemory();  
  16.         float totalMemory = (float)runtime.totalMemory();  
  17.         String memory = "idle scale : "+(freeMemory/totalMemory)+"%; freeMemory="  
  18.             +(freeMemory)/1024+" KB; totalMemory="+(totalMemory)/1024+" KB" ;  
  19.         return memory;  
  20.     }  
  21. }  

 

 

 

Java代码  收藏代码
  1. /** 
  2.  * @author river.wang 
  3.  */  
  4. public class ServerMonitorAgent {  
  5.     public static void main( String[] args ) throws Exception {  
  6.         //在指定端口上启动远程对象注册服务程序,启用RMI,对应于 JAVA_HOME/bin/rmiregistry.exe   
  7.         LocateRegistry.createRegistry(9999);   
  8.         //MBeanServer  
  9.         MBeanServer server=MBeanServerFactory.createMBeanServer();    
  10.         //被管理的bean  
  11.         ObjectName monitorName = new ObjectName( "river:type=ServerMonitorMBean,name=serverMonitor" );  
  12.         server.registerMBean( new ServerMonitor(), monitorName );  
  13.           
  14.         //打开远程连接服务,可以用jconsole连接,或者自己写client连接  
  15.         JMXServiceURL url=new JMXServiceURL("service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/serverMonitor");    
  16.         JMXConnectorServer cs=JMXConnectorServerFactory.newJMXConnectorServer(url, null, server);    
  17.         cs.start();   
  18.           
  19.         //打开HtmlAdaptorServer服务,在浏览器输入http://localhost:8899进行连接,依赖jmxtools.jar,可以在附件中下载  
  20.         HtmlAdaptorServer adapter = new HtmlAdaptorServer(8899);  
  21.         server.registerMBean(adapter, new ObjectName("river:name=htmlAdapter"));  
  22.         adapter.start();  
  23.     }  
  24. }  

 

 

 

ServerMonitorMBean monitor = JMX.newMBeanProxy( ...,ServerMonitorMBean.class );

从jvm,classloader的角度看,client的ServerMonitorMBean和server端的不是一个类,最好在两台机器上或者jvm试试。    

 

Java代码  收藏代码
  1. /** 
  2.  * @author river.wang 
  3.  */  
  4. public class ServerMonitorClient {  
  5.     public static void main( String[] args )  
  6.         throws Exception {  
  7.         JMXConnector conn = JMXConnectorFactory.connect(  
  8.              new JMXServiceURL( "service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/serverMonitor" ), null );  
  9.         ServerMonitorMBean monitor = JMX.newMBeanProxy( conn.getMBeanServerConnection(),  
  10.              new ObjectName( "river:type=ServerMonitorMBean,name=serverMonitor" ),ServerMonitorMBean.class );  
  11.                               
  12.         for ( int i = 0; i < 10; i++ ) {  
  13.             System.out.println( monitor.getUptime() );  
  14.             System.out.println( monitor.getMemory() );  
  15.         }  
  16.         conn.close();  
  17.     }  
  18. }  
  • jmxtools.jar (100 KB)
  • 下载次数: 34
0 0
原创粉丝点击