The Framework Start Level package allows management agents to manage a start
level assigned to each bundle and the active start level of the Framework.
This package is a replacement for the now deprecated
A start level is defined to be a state of execution in which the Framework exists. Start level values are defined as unsigned integers with 0 (zero) being the state where the Framework is not launched. Progressively higher integral values represent progressively higher start levels. For example, 2 is a higher start level than 1.
AdminPermission is required to modify start level information.
Start Level support in the Framework includes the ability to modify the
active start level of the Framework and to assign a specific start level to a
bundle. The beginning start level of a Framework is specified via the
property when configuring a framework.
When the Framework is first started it must be at start level zero. In this
state, no bundles are running. This is the initial state of the Framework
before it is launched. When the Framework is launched, the Framework will
enter start level one and all bundles which are assigned to start level one
and whose autostart setting indicates the bundle should be started are
started as described in the
method. The Framework will continue to increase the start level, starting
bundles at each start level, until the Framework has reached a beginning
start level. At this point the Framework has completed starting bundles and
will then fire a Framework event of type
FrameworkEvent.STARTED to announce it has
completed its launch.
Within a start level, bundles may be started in an order defined by the
Framework implementation. This may be something like ascending
Bundle.getBundleId() order or an order based upon
dependencies between bundles. A similar but reversed order may be used when
stopping bundles within a start level.
The Framework Start Level package can be used by management bundles to alter the active start level of the framework.
Bundles wishing to use this package must list the package in the Import-Package header of the bundle's manifest. For example:
Import-Package: org.osgi.framework.startlevel; version="[1.0,2.0)"