HelloWorldMBean接口
package com.acxiom.bilyao; public interface HelloWorldMBean { public void setGreeting(String greeting); public String getGreeting(); public void sayHello(); }
HelloWorld
package com.acxiom.bilyao; import javax.management.Notification; import javax.management.NotificationBroadcasterSupport; public class HelloWorld extends NotificationBroadcasterSupport implements HelloWorldMBean { private String greeting = null; public HelloWorld() { this.greeting = "Hello World! I am a Standard MBean"; } public HelloWorld(String greeting) { this.greeting = greeting; } @Override public void setGreeting(String greeting) { this.greeting = greeting; Notification notification = new Notification( "com.acxiom.bilyao.helloWorld.test", this, -1, System.currentTimeMillis(), greeting); sendNotification(notification); } @Override public String getGreeting() { return greeting; } @Override public void sayHello() { System.out.println(greeting); } }
HelloAgent
package com.acxiom.bilyao; import java.lang.management.ManagementFactory; import javax.management.MBeanServer; import javax.management.Notification; import javax.management.NotificationListener; import javax.management.ObjectName; import com.sun.jdmk.comm.HtmlAdaptorServer; public class HelloAgent implements NotificationListener{ private MBeanServer mbs = null; public HelloAgent() { mbs = ManagementFactory.getPlatformMBeanServer(); //mbs = MBeanServerFactory.createMBeanServer("HelloAgent"); HtmlAdaptorServer adapter = new HtmlAdaptorServer(); HelloWorld hw = new HelloWorld(); ObjectName helloName = null; ObjectName adapterName = null; try { helloName = new ObjectName("HelloAgent:name=helloworld"); adapterName = new ObjectName("HelloAgent:name=htmladapter,port=8000"); adapter.setPort(8000); mbs.registerMBean(adapter, adapterName); adapter.start(); mbs.registerMBean(hw,helloName); hw.addNotificationListener( this, null, null ); } catch(Exception e) { e.printStackTrace(); } } private static void waitForEnterPressed() { try { System.out.println("Press <Enter> to continue..."); System.in.read(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { HelloAgent ha = new HelloAgent(); System.out.println("Hello Agent is running..."); HelloAgent.waitForEnterPressed(); } @Override public void handleNotification(Notification notif, Object handback) { System.out.println( "Receiving notification..." ); System.out.println( notif.getType() ); System.out.println( notif.getMessage()); } }