首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

JMX in Action 学习日记

2012-08-28 
JMX in Action 学习日志学习JMX是JMX IN ACTION 一书书中的代码中RMI的API已经过时了,写了些新代码JMXBook

JMX in Action 学习日志
学习JMX  是JMX IN ACTION 一书
书中的代码中RMI的API已经过时了,
写了些新代码

JMXBookAgent.java  //Server
package jmxbook.ch3;

import java.rmi.registry.LocateRegistry;

import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXServiceURL;

import com.sun.jdmk.comm.HtmlAdaptorServer;

public class JMXBookAgent {

private MBeanServer server = null;

public JMXBookAgent() {
System.out.println("\n\tCREATE the MBeanServer");
server = MBeanServerFactory.createMBeanServer("JMXBookAget");

startHTMLAdapter();
startRMIConnector();

try {
server.registerMBean(new HelloWorld(), new ObjectName("HelloWorldMBean:name=helloWorld"));
} catch (Exception e) {
e.printStackTrace();
}
}

private void startRMIConnector() {
try {
/*
* 先注册RMI的端口 再进行对RMIConnectorServer的注册
*/
LocateRegistry.createRegistry(2099);
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:2099/server");
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, server);
server.registerMBean(cs, new ObjectName("JMXAgent:name=RMI,port=2099"));
cs.start();
} catch (Exception e) {
e.printStackTrace();
}
}

private void startHTMLAdapter() {
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
ObjectName adapterName = null;
try {
adapter.setPort(9092);
adapterName = new ObjectName("JMXBookAgent:name=html,port=9092");
server.registerMBean(adapter, adapterName);
adapter.start();
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~" +
        "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        System.out.println("\n>>> START of JMXBook Agent");
        System.out.println("\n>>> CREATE the agent...");

JMXBookAgent jba = new JMXBookAgent();

System.out.println("\nAgent is Ready for Service...\n");
}
}

Client:
package jmxbook.ch3;

import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

public class RMIClientFactory {

public static MBeanServerConnection getClient() {
MBeanServerConnection mbsc = null;
try {
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:2099/server");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
mbsc = jmxc.getMBeanServerConnection();
} catch (Exception e) {
e.printStackTrace();
}
return mbsc;
}

public static void main(String[] args) {
MBeanServerConnection mbsc = RMIClientFactory.getClient();
System.out.println("**************");
try {
mbsc.invoke(new ObjectName("HelloWorldMBean:name=helloWorld"), "printGreeting", null, null);
} catch (Exception e) {
e.printStackTrace();
}

}
}

HelloWorldMBean:
package jmxbook.ch3;

public interface HelloWorldMBean
{
  public void setGreeting( String greeting );
 
  public String getGreeting();
 
  public void printGreeting();
}

HelloWorld
package jmxbook.ch3;

public class HelloWorld implements HelloWorldMBean         
{

    private String greeting = null;
   
    public HelloWorld()                                    
    {
      this.greeting = "Hello World! I am a Standard MBean";
    }                                                      
   
    public HelloWorld( String greeting )                   
    {
      this.greeting = greeting;                            
    }                                                      
   
    public void setGreeting( String greeting )
    {
      this.greeting = greeting;
    }
   
    public String getGreeting()
    {
      return greeting;  
    }
   
    public void printGreeting()
    {
      System.out.println( greeting );  
    }
      
}




热点排行