41 package com.sun.jmx.examples.scandir;
44 import java.io.IOException;
45 import java.lang.management.ManagementFactory;
46 import java.util.concurrent.BlockingQueue;
47 import java.util.concurrent.LinkedBlockingQueue;
48 import java.util.concurrent.TimeUnit;
49 import java.util.logging.Logger;
50 import javax.management.JMException;
51 import javax.management.Notification;
52 import javax.management.NotificationEmitter;
53 import javax.management.NotificationListener;
81 private static final Logger
LOG =
90 private final BlockingQueue<Notification>
queue;
104 queue =
new LinkedBlockingQueue<Notification>();
107 listener =
new NotificationListener() {
108 public void handleNotification(Notification notification,
114 LOG.finer(
"Queuing received notification "+notification);
115 queue.put(notification);
116 }
catch (InterruptedException ex) {
129 public void init() throws IOException, JMException {
139 ((NotificationEmitter)
proxy).addNotificationListener(
listener,
null,
null);
147 public void cleanup() throws IOException, JMException {
149 ((NotificationEmitter)
proxy).
150 removeNotificationListener(
listener,
null,
null);
152 ManagementFactory.getPlatformMBeanServer().
193 queue.poll(30,TimeUnit.SECONDS);
194 }
catch (InterruptedException ex) {
209 public static void main(String[] args)
210 throws IOException, JMException {
211 System.out.println(
"Initializing ScanManager...");
215 System.out.println(
"Waiting for ScanManager to close...");
216 agent.waitForClose();
218 System.out.println(
"Cleaning up...");