OSGi InstallerPage edited by Carsten ZiegelerChanges (4)
Full ContentOverviewThe OSGi installer is a central service for handling installs, updates and uninstall of "artifacts". By default, the installer supports bundles and has an extension for handling configurations for the OSGi configuration admin. The OSGi installer itself is "just" the central service managing the tasks and states of the artifacts. The artifacts can be provided through various providers, e.g. through a file system provider reading artifacts from configured directories or the jcr provider reading artifacts from a JCR repository. A provider is just scanning for artifacts and their removal. It informs the OSGi installer about new artifacts and removed artifacts. The provider itself has usually no knowledge about the contents of an artifact. It does not know about bundles, configurations etc. As the OSGi installer itself is not performing the actual install, update or removal of an artifact, its possible to install transformers and installer factories. A transformer inspects the artifacts and tries to detect its type. By default, detecting of bundles and configurations is supported. The final service is an installer factory creating the actual task, like install this bundle, update that bundle etc. It's possible to add own providers, transformers and installer factories to support custom scenarios. Artifact HandlingOnce an artifact is detected by a transformer, it gets a unique id. By default a bundle gets the symbolic name as the unique identifier and a configuration the PID. Artifacts with the same unique id are grouped and then sorted by priority and maybe other artifact dependent metadata like the bundle version. Only the first artifact in this sorted group is tried to be applied! Bundle HandlingIn general, the OSGi installer always tries to install the highest version of a bundle if several bundles with the same symbolic name are provided. In this case higher version wins over priority. If a failure occurs during bundle installation or update, the OSGi installer will retry this as soon as another bundle has been installed. The common use case is an application installation with several bundles where one bundle depends on another. As they are installed in arbitrary order, this mechanism ensures that in the end all bundles are properly wired and installed. When all artifacts have been processed (either install, update or delete), a package refresh is automatically called. Versions and SnapshotsThe OSGi installer asumes that a symbolic name and version (not a snapshot version) uniquely identifies a bundle. Obviously this is a common development requirement that a released version of an artifact never changes over time. Therefore, once a bundle with a specific version is installed, it will not be reinstalled if the corresponding artifact changes. For example, if bundle A with version 1.0 is put into the JCR repository, it gets installed. If now this jar in the repository is overwritten either with the same contents or with a different one, and this new artifact has again A as the symbolic name and version set to 1.0, nothing will happen as this exact bundle is already installed. During development, SNAPSHOT versions should be used, like 1.0.0-SNAPSHOT (using the Maven convention). If a bundle with a snapshot version is changed, it gets updated by the OSGI installer. Configuration HandlingIn general the OSGi installer installs the configuration with the highes priority. For example in combination with the JCR installer provider, a configuration from /apps is preferred over a configuration for the same service from /libs.
Change Notification Preferences
View Online
|
View Changes
|
Add Comment
|
- [CONF] Apache Sling Website > OSGi Installer confluence
- [CONF] Apache Sling Website > OSGi Installer confluence
- [CONF] Apache Sling Website > OSGi Installer confluence
- [CONF] Apache Sling Website > OSGi Installer confluence
- [CONF] Apache Sling Website > OSGi Installer confluence
- [CONF] Apache Sling Website > OSGi Installer confluence
- [CONF] Apache Sling Website > OSGi Installer confluence
- [CONF] Apache Sling Website > OSGi Installer confluence
- [CONF] Apache Sling Website > OSGi Installer confluence
- [CONF] Apache Sling Website > OSGi Installer confluence
- [CONF] Apache Sling Website > OSGi Installer confluence
