package jp.gr.java_conf.skrb.game.trivia.mserver; import javax.management.InstanceNotFoundException; import javax.management.MalformedObjectNameException; import javax.management.Notification; import javax.management.NotificationListener; import javax.management.ObjectName; import javax.management.monitor.CounterMonitor; import javax.management.monitor.MonitorNotification; public class TriviaMonitorStarter extends TriviaStandardMBeanStarter { private CounterMonitor counterMonitor; private static final String MONITOR_NAME = "MBean:name=CounterMonitor"; public TriviaMonitorStarter() { super(); initMonitor(); NotificationListener listener = new NotificationListener() { public void handleNotification(Notification notification, Object handback) { System.out.println("Received notification: " + notification); MonitorNotification mNotification = (MonitorNotification)notification; System.out.println("MBean: " + mNotification.getObservedObject()); System.out.println("Attribute: " + mNotification.getObservedAttribute()); System.out.println("Trigger: " + mNotification.getTrigger()); System.out.println("Gauge: " + mNotification.getDerivedGauge()); System.out.println(); } }; try { server.addNotificationListener(new ObjectName(MONITOR_NAME), listener, null, null); } catch (MalformedObjectNameException ex) { ex.printStackTrace(); } catch(InstanceNotFoundException ex) { ex.printStackTrace(); } } private void initMonitor() { counterMonitor = new CounterMonitor(); try { registerMBean(counterMonitor, MONITOR_NAME); ObjectName objectName = new ObjectName(TRIVIA_MBEAN_NAME); counterMonitor.addObservedObject(objectName); counterMonitor.setObservedAttribute("TotalCount"); counterMonitor.setNotify(true); counterMonitor.setInitThreshold(20); counterMonitor.setOffset(20); counterMonitor.setGranularityPeriod(100L); counterMonitor.start(); } catch (MalformedObjectNameException ex) { ex.printStackTrace(); } } public static void main(String[] args) { new TriviaMonitorStarter(); } }