| 
 | OSGi™ Service Platform Release 4 Version 4.2 | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
public interface StartLevel
The StartLevel service allows management agents to manage a start level assigned to each bundle and the active start level of the Framework. There is at most one StartLevel service present in the OSGi environment.
A start level is defined to be a state of execution in which the Framework exists. StartLevel 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. e.g. 2 is a higher start level than 1.
 Access to the StartLevel service is protected by corresponding
 ServicePermission. In addition AdminPermission
 is required to actually modify start level information.
 
Start Level support in the Framework includes the ability to control the beginning start level of the Framework, to modify the active start level of the Framework and to assign a specific start level to a bundle. How the beginning start level of a Framework is specified is implementation dependent. It may be a command line argument when invoking the Framework implementation.
 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
 Bundle.start 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 StartLevel service can be used by management bundles to alter the active start level of the framework.
| Method Summary | |
|---|---|
|  int | getBundleStartLevel(Bundle bundle)Return the assigned start level value for the specified Bundle. | 
|  int | getInitialBundleStartLevel()Return the initial start level value that is assigned to a Bundle when it is first installed. | 
|  int | getStartLevel()Return the active start level value of the Framework. | 
|  boolean | isBundleActivationPolicyUsed(Bundle bundle)Returns whether the specified bundle's autostart setting indicates that the activation policy declared in the bundle's manifest must be used. | 
|  boolean | isBundlePersistentlyStarted(Bundle bundle)Returns whether the specified bundle's autostart setting indicates the bundle must be started. | 
|  void | setBundleStartLevel(Bundle bundle,
                    int startlevel)Assign a start level value to the specified Bundle. | 
|  void | setInitialBundleStartLevel(int startlevel)Set the initial start level value that is assigned to a Bundle when it is first installed. | 
|  void | setStartLevel(int startlevel)Modify the active start level of the Framework. | 
| Method Detail | 
|---|
int getStartLevel()
void setStartLevel(int startlevel)
The Framework will move to the requested start level. This method will return immediately to the caller and the start level change will occur asynchronously on another thread.
If the specified start level is higher than the active start level, the Framework will continue to increase the start level until the Framework has reached the specified start level. At each intermediate start level value on the way to and including the target start level, the Framework must:
Bundle.start(int) method using the
 Bundle.START_TRANSIENT option. The
 Bundle.START_ACTIVATION_POLICY option must also be used if
 isBundleActivationPolicyUsed(Bundle) returns true
 for the bundle.
 FrameworkEvent.STARTLEVEL_CHANGED to announce it has moved
 to the specified start level.
 
 If the specified start level is lower than the active start level, the Framework will continue to decrease the start level until the Framework has reached the specified start level. At each intermediate start level value on the way to and including the specified start level, the framework must:
Bundle.stop(int) method using the Bundle.STOP_TRANSIENT
 option.
 FrameworkEvent.STARTLEVEL_CHANGED to announce it has moved
 to the specified start level.
 
 
 If the specified start level is equal to the active start level, then no
 bundles are started or stopped, however, the Framework must fire a
 Framework event of type FrameworkEvent.STARTLEVEL_CHANGED
 to announce it has finished moving to the specified start level. This
 event may arrive before this method return.
startlevel - The requested start level for the Framework.
java.lang.IllegalArgumentException - If the specified start level is less
         than or equal to zero.
java.lang.SecurityException - If the caller does not have
         AdminPermission[System Bundle,STARTLEVEL] and the
         Java runtime environment supports permissions.int getBundleStartLevel(Bundle bundle)
bundle - The target bundle.
java.lang.IllegalArgumentException - If the specified bundle has
         been uninstalled or if the specified bundle was not created by
         the same framework instance that registered this
         StartLevel service.
void setBundleStartLevel(Bundle bundle,
                         int startlevel)
The specified bundle will be assigned the specified start level. The start level value assigned to the bundle will be persistently recorded by the Framework.
 If the new start level for the bundle is lower than or equal to the
 active start level of the Framework and the bundle's autostart setting
 indicates the bundle must be started, the Framework will start the
 specified bundle as described in the Bundle.start(int) method
 using the Bundle.START_TRANSIENT option. The
 Bundle.START_ACTIVATION_POLICY option must also be used if
 isBundleActivationPolicyUsed(Bundle) returns true
 for the bundle. The actual starting of this bundle must occur
 asynchronously.
 
 If the new start level for the bundle is higher than the active start
 level of the Framework, the Framework will stop the specified bundle as
 described in the Bundle.stop(int) method using the
 Bundle.STOP_TRANSIENT option. The actual stopping of this bundle
 must occur asynchronously.
bundle - The target bundle.startlevel - The new start level for the specified Bundle.
java.lang.IllegalArgumentException - If the specified bundle has been
         uninstalled, or if the specified start level is less than or
         equal to zero, or if the specified bundle is the system bundle,
         or if the specified bundle was not created by the same framework
         instance that registered this StartLevel service.
java.lang.SecurityException - If the caller does not have
         AdminPermission[bundle,EXECUTE] and the Java runtime
         environment supports permissions.int getInitialBundleStartLevel()
setInitialBundleStartLevel(int)void setInitialBundleStartLevel(int startlevel)
The initial bundle start level will be set to the specified start level. The initial bundle start level value will be persistently recorded by the Framework.
 When a Bundle is installed via BundleContext.installBundle,
 it is assigned the initial bundle start level value.
 
 
The default initial bundle start level value is 1 unless this method has been called to assign a different initial bundle start level value.
This method does not change the start level values of installed bundles.
startlevel - The initial start level for newly installed bundles.
java.lang.IllegalArgumentException - If the specified start level is less
         than or equal to zero.
java.lang.SecurityException - If the caller does not have
         AdminPermission[System Bundle,STARTLEVEL] and the
         Java runtime environment supports permissions.boolean isBundlePersistentlyStarted(Bundle bundle)
The autostart setting of a bundle indicates whether the bundle is to be started when its start level is reached.
bundle - The bundle whose autostart setting is to be examined.
true if the autostart setting of the bundle
         indicates the bundle is to be started. false
         otherwise.
java.lang.IllegalArgumentException - If the specified bundle has
         been uninstalled or if the specified bundle was not created by
         the same framework instance that registered this
         StartLevel service.Bundle.START_TRANSIENTboolean isBundleActivationPolicyUsed(Bundle bundle)
The autostart setting of a bundle indicates whether the bundle's declared activation policy is to be used when the bundle is started.
bundle - The bundle whose autostart setting is to be examined.
true if the bundle's autostart setting indicates the
         activation policy declared in the manifest must be used.
         false if the bundle must be eagerly activated.
java.lang.IllegalArgumentException - If the specified bundle has
         been uninstalled or if the specified bundle was not created by
         the same framework instance that registered this
         StartLevel service.Bundle.START_ACTIVATION_POLICY| 
 | OSGi™ Service Platform Release 4 Version 4.2 | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||