*
*/
protected void close() {
valid = false; /* invalidate context */
final ServiceRegistry registry = framework.getServiceRegistry();
registry.removeAllServiceListeners(this);
synchronized (framework.frameworkEvent) {
if (frameworkEvent != null) {
framework.frameworkEvent.remove(this);
frameworkEvent = null;
}
}
synchronized (framework.bundleEvent) {
if (bundleEvent != null) {
framework.bundleEvent.remove(this);
bundleEvent = null;
}
}
synchronized (framework.bundleEventSync) {
if (bundleEventSync != null) {
framework.bundleEventSync.remove(this);
bundleEventSync = null;
}
}
/* service's registered by the bundle, if any, are unregistered. */
registry.unregisterServices(this);
/* service's used by the bundle, if any, are released. */
registry.releaseServicesInUse(this);
synchronized (contextLock) {
servicesInUse = null;
}
}