package jp.gr.java_conf.skrb.game.trivia.mclient; import java.io.IOException; import java.net.MalformedURLException; import javax.management.InstanceNotFoundException; import javax.management.MBeanServerConnection; import javax.management.MalformedObjectNameException; import javax.management.Notification; import javax.management.NotificationListener; import javax.management.ObjectName; import javax.management.monitor.MonitorNotification; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; import jp.gr.java_conf.skrb.game.trivia.mserver.TriviaMBeanStarter; public class TriviaMBeanRemoteTest4 { public static final String TRIVIA_SERVER_ADDRESS = "service:jmx:rmi:///jndi/rmi://localhost/trivia"; private MBeanServerConnection connection; private ObjectName monitorName; public TriviaMBeanRemoteTest4() { try { JMXServiceURL url = new JMXServiceURL(TRIVIA_SERVER_ADDRESS); JMXConnector connector = JMXConnectorFactory.connect(url, null); connection = connector.getMBeanServerConnection(); monitorName = new ObjectName(TriviaMBeanStarter.TRIVIA_MONITOR_MBEAN_NAME); addNotificationListener(); } catch (MalformedObjectNameException ex) { ex.printStackTrace(); } catch (MalformedURLException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } waitUntilKeyboardInput(); } private void waitUntilKeyboardInput() { try { System.in.read(); } catch (IOException ex) {} } private void addNotificationListener() { try { 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(); } }; connection.addNotificationListener(monitorName, listener, null, null); } catch (InstanceNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } } public static void main(String[] args) { new TriviaMBeanRemoteTest4(); } }