in plugins/org.apache.karaf.eik.workbench/src/main/java/org/apache/karaf/eik/workbench/internal/KarafRuntimeDataProvider.java [251:306]
private IStatus loadServiceData(final IProgressMonitor monitor) {
monitor.subTask("OSGi Services");
if (monitor.isCanceled()) {
return Status.OK_STATUS;
}
if (!mbeanProvider.isOpen()) {
return new Status(IStatus.WARNING, KarafWorkbenchActivator.PLUGIN_ID, "Connection to MBean server has been closed");
}
try {
final TabularData rawServiceData = mbeanProvider.getMBean(SERVICE_STATE, ServiceStateMBean.class).listServices();
synchronized (serviceSet) {
serviceSet.clear();
idToServiceMap.clear();
}
for (final Object o : rawServiceData.values()) {
final CompositeData composite = (CompositeData) o;
final ServiceData service = ServiceData.from(composite);
/*
* Get the service's properties from the JMX enabled runtime
*/
if (!mbeanProvider.isOpen()) {
return new Status(IStatus.WARNING, KarafWorkbenchActivator.PLUGIN_ID, "Connection to MBean server has been closed");
}
final ServiceItem serviceWrapper = new MBeanServiceItem(composite, mbeanProvider, idToBundleMap);
synchronized (serviceSet) {
serviceSet.add(serviceWrapper);
idToServiceMap.put(service.getServiceId(), serviceWrapper);
}
monitor.worked(1);
if (monitor.isCanceled()) {
break;
}
}
} catch (final IOException e) {
if (monitor.isCanceled()) {
return new Status(IStatus.CANCEL, KarafWorkbenchActivator.PLUGIN_ID, "Unable to connect to MBeanServer", e);
} else {
return new Status(IStatus.ERROR, KarafWorkbenchActivator.PLUGIN_ID, "Unable to connect to MBeanServer", e);
}
} catch (final Exception e) {
KarafWorkbenchActivator.getLogger().warn("Unable to update OSGi Services", e);
}
return Status.OK_STATUS;
}