int nTasks = maxPoolSize + 2;
ObjectName[] mbeanNames = new ObjectName[nTasks];
ObservedObject[] monitored = new ObservedObject[nTasks];
ObjectName[] monitorNames = new ObjectName[nTasks];
Monitor[] monitor = new Monitor[nTasks];
String[] attributes = { "Integer", "Double", "String" };
try {
echo(">>> CREATE MBeanServer");
MBeanServer server = MBeanServerFactory.newMBeanServer();
String domain = server.getDefaultDomain();
for (int i = 0; i < nTasks; i++) {
mbeanNames[i] = new ObjectName(":type=ObservedObject,instance=" + (i + 1));
monitored[i] = new ObservedObject();
echo(">>> CREATE ObservedObject = " + mbeanNames[i].toString());
server.registerMBean(monitored[i], mbeanNames[i]); switch (monitorType) { case1:
monitorNames[i] = new ObjectName(":type=CounterMonitor," + "instance=" + (i + 1));
monitor[i] = new CounterMonitor(); break; case2:
monitorNames[i] = new ObjectName(":type=GaugeMonitor," + "instance=" + (i + 1));
monitor[i] = new GaugeMonitor(); break; case3:
monitorNames[i] = new ObjectName(":type=StringMonitor," + "instance=" + (i + 1));
monitor[i] = new StringMonitor(); break; default:
echo("Unsupported monitor type"); return1;
}
echo(">>> CREATE Monitor = " + monitorNames[i].toString());
server.registerMBean(monitor[i], monitorNames[i]);
monitor[i].addObservedObject(mbeanNames[i]);
monitor[i].setObservedAttribute(attributes[monitorType-1]);
monitor[i].setGranularityPeriod(50);
}
for (int j = 0; j < 2; j++) {
echo(">>> Start MONITORS"); for (int i = 0; i < nTasks; i++)
monitor[i].start();
echo(">>> MONITORS started");
doSleep(500);
echo(">>> Check FLAGS true"); for (int i = 0; i < nTasks; i++) if (!monitored[i].called) {
echo("KO: At least one attribute was not called"); return1;
}
echo(">>> FLAGS checked true");
echo(">>> Stop MONITORS"); for (int i = 0; i < nTasks; i++)
monitor[i].stop();
echo(">>> MONITORS stopped");
doSleep(500);
echo(">>> Set FLAGS to false"); for (int i = 0; i < nTasks; i++)
monitored[i].called = false;
echo(">>> FLAGS set to false");
echo(">>> Check FLAGS remain false"); for (int i = 0; i < nTasks; i++) if (monitored[i].called) {
echo("KO: At least one attribute " + "continued to get called"); return1;
}
echo(">>> FLAGS checked false");
}
} finally { for (int i = 0; i < nTasks; i++) if (monitor[i] != null)
monitor[i].stop();
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.