A framework has one composite bundle for each of its child frameworks. A framework can have zero or more composite bundles installed. A child framework must have one and only one surrogate bundle which represents the composite bundle in the parent framework. In other words, a parent framework can have many child frameworks but a child framework can have only one parent.
A composite bundle does the following as specified by the composite manifest map:
Framework
will be in the {@link Bundle#STARTING STARTING} state. This child Framework
canthen be used to manage and control the child framework instance. The child framework instance is persistent and uses a storage area associated with the installed composite bundle. The child framework's lifecycle is tied to its composite bundle's lifecycle in the following ways:
The child framework may be persistently started and stopped by persistently starting and stopping the composite bundle, but it is still possible to initialize and start the child framework explicitly while the composite bundle is not persistently started. This allows for the child framework to be initialized and populated with a set of bundles before starting the composite bundle. The set of bundles installed into the child framework are the component bundles which comprise the composite bundle.
The child framework's lifecycle is also tied to the lifecycle of its parent framework. When the parent Framework
enters the {@link Bundle#STOPPING STOPPING} state, all active child frameworks of thatparent are shutdown using the {@link Framework#stop()} method. The parentframework must not enter the {@link Bundle#RESOLVED} state until all thechild frameworks have completed their shutdown process. Just as with other Bundles, references to child frameworks (or the associated composite and surrogate bundles) become invalid after the parent framework has completed the shutdown process, and must not be allowed to re-initialize or re-start the child framework.
@see SurrogateBundle
@deprecated This API proposal was rejected by the OSGi Alliance and will not be part of any OSGi specification. Please transition to the org.osgi.framework.hooks API to control resolution, bundle, and service isolation. This API will be removed from Equinox in the 3.9 release You are cautioned against relying upon this API.
@ThreadSafe
@version $Revision: 6860 $
|
|
|
|