Applications OSGi

Une application OSGi regroupe un ensemble de bundles afin de fournir une logique métier cohérente. L'application peut se composer de différents types de bundle, comme des bundles Web et des bundles compatibles avec la persistance.

Les bundles dans une application OSGi sont isolés des bundles, services ou packages qui sont définis dans une autre application OSGi, sauf si les bundles, les services ou les packages sont explicitement partagés par les deux applications. Une application OSGi peut contenir directement des bundles OSGi ou référencer des bundles qui sont hébergés dans un référentiel de bundles OSGi.

Les bundles OSGi dans l'application peuvent partager des services avec d'autres applications OSGi. Si une application OSGi génère des références et des services externes, ils sont exposés explicitement via leur déclaration dans un manifeste d'application. De même, les références et les services externes consommés par l'application OSGi sont déclarés dans le manifeste de l'application. Une application OSGi peut aussi utiliser des métadonnées pour permettre le partage de certains de ses bundles constituants sur le système. Ainsi, il est possible de réduire les exigences en mémoire et ressource d'un système.

Une application OSGi contient :
Contenu d'archive
Manifeste d'application
Manifeste de déploiement

Contenu d'archive

Le contenu d'archive est utilisé de deux façons différentes, selon que l'en-tête Application-Content est défini dans le manifeste de l'application ou non.
  • Si l'en-tête Application-Content n'est pas défini, le contenu d'archive définit le contenu de l'application OSGi.
  • Si un en-tête Application-Content est défini, le contenu d'archive définit un référentiel de bundles initial fournissant les bundles. Si un bundle d'une version spécifique est installé dans un référentiel régi et que le bundle se trouve également dans une archive d'application, le bundle de l'archive est utilisé.

Manifeste d'application

Le manifeste d'application, META-INF/APPLICATION.MF, décrit la modularité au niveau de l'application. Par défaut, lorsque le manifeste de l'application n'est pas déclaré, le contenu de l'application correspond à l'ensemble de bundles OSGi qui se trouvent dans l'application OSGi et aucune référence ou aucun service externe n'est généré ou consommé.

Un manifeste d'application peut contenir les en-têtes suivants :
Application-SymbolicName

Nom symbolique unique de l'application OSGi, qui utilise une notation de package similaire à Java.

Application-Version

Version de l'application, qui utilise la syntaxe OSGi pour une version de bundle.

Application-Name

Nom de l'application.

Application-ImportService

Déclare les dépendances externes du bundle qui sont utilisées par l'infrastructure OSGi pour la résolution de bundle. Des versions ou des plages de versions spécifiques peuvent être déclarées pour chaque service.

Ensemble de filtres des services externes que l'application consomme. Le manifeste de l'application doit contenir les classes requises par les services. Si cet en-tête n'est pas spécifié, aucun des services requis n'est importé.

Spécifiez les services requis dans une liste en les séparant par une virgule, en indiquant le nom de l'interface de service suivi des attributs ou des directives.
<identificateur de service>;<directives>;<attributs>
Exemple :
test.it;filter="un_filtre"
L'en-tête Application-ImportService possède l'attribut suivant :
filter
Filtre de service OSGi.
Application-ExportService

Déclare les services qui sont visibles hors du bundle. Tout service non déclaré ici n'est visible qu'au sein du bundle.

Ensemble de filtres des services externes que l'application génère. Si cet en-tête n'est pas spécifié, aucun des services requis n'est exporté.

Spécifiez les services exportés dans une liste en les séparant par une virgule, en indiquant le nom d'interface de service suivi des attributs ou des directives.
<identificateur de service>;<directives>;<attributs>
Exemple :
test.it;filter="un_filtre"
L'en-tête Application-ExportService possède l'attribut suivant :
filter
Filtre de service OSGi.
Use-Bundle

Un bundle partagé qui fournit au moins un package à un bundle d'applications.

Liste de bundles ou de bundles composite à utiliser pour satisfaire les dépendances de package des bundles dans la liste Application-Content. Chaque bundle ou bundle composite de la liste Use-Bundle doit fournir au moins un package à au moins un bundle de la liste Application-Content. Ces bundles sont fournis dans l'espace des bundles partagés lors de l'exécution.

Souvent, l'en-tête Use-Bundle n'est pas nécessaire, mais il peut être utile dans certains cas. Vous pouvez l'utiliser pour restreindre le niveau sur lequel le partage est possible. Par exemple, vous pouvez vous assurer qu'une application utilise le même bundle pour les importations de package que celui avec lequel elle a été testée. Sinon, vous pouvez vous assurer que deux applications utilisent le même bundle pour des importations de package. Le fait de définir la restriction au niveau de l'application permet au bundle de rester flexible.

Application-WebModules

Liste de projets Web dynamiques non OSGi qui sont inclus dans l'application.

Cet en-tête ne fait pas partie de la norme OSGi.

Application-Content
Liste de bundles composites, de fragments de bundle et de bundles compris dans la plage admise de spécifications OSGi et inclus dans l'application.
Tip: Lorsque vous incluez un fragment de bundle dans la liste Application-Content, veillez à inclure le bundle hôte pour le fragment.
Le format est une liste, dont les éléments sont séparés par des virgules, des déclarations de module où chaque déclaration de module utilise le format suivant :
<identificateur de module>;<directives>;<attributs>

En général, l'identificateur de module est le nom symbolique d'un bundle. Pour référencer une ressource qui n'est pas un bundle, l'identificateur de module est le chemin d'accès relatif à la racine de l'application OSGi.

L'en-tête Application-Content possède l'attribut suivant :
version
La version du module est spécifiée avec la syntaxe OSGi pour une plage de versions. Spécifiez la version minimale de l'application, suivie de la version maximale à laquelle l'application peut être mise à niveau. Par exemple, "[1.0.0,2.0.0)" signifie la version 1.0.0 et toutes les versions suivantes jusqu'à la version 2.0.0 exclue.

L'en-tête Application-Content définit les applications importantes qui composent les services métier mais ne définit pas la liste complète des bundles dans l'application. Si un bundle répertorié dans le contenu utilise un package qui n'est pas inclus dans l'application, les dépendances sont analysées et tout bundle manquant est inclus. Ces bundles ne peuvent pas fournir de services externes à l'application et la sécurité ne peut pas leur être appliquée. Les bundles qui sont inclus avec ce mécanisme sont partagés.

Manifeste de déploiement

Lorsqu'une application OSGi est installée, le manifeste de l'application spécifie les bundles qui composent une application. Il peut spécifier plusieurs versions pour certains bundles.

Le manifeste de déploiement META-INF/DEPLOYMENT.MF spécifie tous les bundles qui constituent l'application, y compris les bundles qui sont requis suite à l'analyse des dépendances. Il spécifie la version réelle de chaque bundle qui est utilisé dans l'application. Il est créé automatiquement lorsqu'un actif EBA (Enterprise Bundle Archive) est installé et garantit que chaque fois qu'un serveur d'applications démarre, les bundles qui constituent l'application sont les mêmes.

Un actif EBA définit un ensemble de bundles OSGi qui sont déployés sous la forme d'une application OSGi unique et qui sont isolés des autres applications OSGi. Un fichier EBA est un fichier d'archive unique associé à l'extension de fichier .eba. Il contient un ensemble de modules d'application ou un manifeste d'application, ou les deux.

Après l'installation d'une application, la version d'un bundle peut être mise à jour en configurant l'actif EBA.

Un manifeste de déploiement contient les en-têtes suivants :
Application-SymbolicName
Nom symbolique unique de l'application, qui utilise une notation de package similaire à Java. Il correspond à la valeur Application-SymbolicName dans le manifeste de l'application.
Application-Version
Version de l'application, qui utilise la syntaxe OSGi pour une version de bundle. Elle correspond à la valeur Application-Version dans le manifeste de l'application.
Deployed-Content

Liste des noms symboliques des bundles séparés par une virgule et versions exactes à utiliser.

La liste inclut tous les bundles qui sont répertoriés dans l'en-tête Application-Content du manifeste de l'application ainsi que les bundles qui sont importés par l'analyse des dépendances. Les types de module autres qu'OSGi sont inclus en utilisant le nom symbolique du bundle converti.

L'en-tête Deployed-Content possède la directive suivante :
deployed-version
Version exacte du bundle, spécifiée avec la syntaxe OSGi des versions.
Icône indiquant le type de rubrique Rubrique
Dispositions pour les centres de documentation | Commentaires en retour

Icône d'horodatage Dernière mise à jour: May 29, 2014 10:11

Nom de fichier : ceba.html