Gestion de contenu dynamique

En général, vous installez les bundles dans l'environnement d'exécution en les répertoriant dans l'en-tête Subsystem-Content du fichier de manifeste de la fonction. Toutefois, vous pouvez également ajouter dynamiquement les bundles OSGi et les supprimer en installant un bundle écrit par l'utilisateur dans l'en-tête Subsystem-Content d'une fonction écrite par l'utilisateur. Le bundle écrit par l'utilisateur obtient le contexte OSGi pour installer et contrôler les autres bundles.

Installation, démarrage, arrêt et désinstallation de bundles dans le profil Liberty

Remarque : Dans les sections suivantes, la fonction écrite par l'utilisateur est appelée UserFeatureA et le bundle écrit par l'utilisateur est appelé FeatureBundleA.
Installation de bundles
Vous pouvez écrire FeatureBundleA pour obtenir le contexte de bundle OSGi, org.osgi.framework.BundleContext, en utilisant une des méthodes suivantes:

Une fois que FeatureBundleA a obtenu le contexte du bundle, les autres bundles peuvent être installés avec les méthodes installBundle(String location) ou installBundle(String location, InputStream stream).

Les bundles qui sont installés dynamiquement reprennent leur état au redémarrage par défaut. Ils ne persistent pas sur un démarrage propre et nécessitent une réinstallation. Voir Bundle caching pour plus de détails.

Démarrage de bundles
Si vous souhaitez démarrer un bundle installé, il est de la responsabilité de FeatureBundleA d'appeler la méthode start pour le bundle.
Arrêt et désinstallation de bundles
Si la fonction écrite par l'utilisateur, UserFeatureA est supprimée de la configuration du serveur, la fonction FeatureBundleA est arrêtée et également désinstallée. La désinstallation de la fonction FeatureBundleA déclenche la désinstallation de tous les bundles qui ont été installés par FeatureBundleA si ils ne l'ont pas déjà été. La méthode org.osgi.framework.Bundle.uninstall() est appelée pour chaque bundle, qui l'arrête et le désinstalle. Ce processus de désinstallation s'applique également si FeatureBundleA est désinstallé par d'autres moyens.

Si UserFeatureA est supprimé de la configuration du serveur lorsque le serveur est arrêté, les bundles qui ont été installés par UserFeatureA sont supprimés au prochain démarrage du serveur. Si les niveaux de début sont les bundles non modifiés de leurs valeurs par défaut, les bundles sont supprimés avant leur redémarrage. Si les niveaux de début ont été modifiés, il est possible qu'il soit impossible de les désinstaller avant leur redémarrage.

D'autres tâches de gestion de cycle de vie sont effectuées par FeatureBundleA selon la spécification core OSGi, en utilisant les interfaces org.osgi.framework.Bundle et org.osgi.framework.BundleContext.

Mise en cache de bundle, visibilité de package et prise en charge de modèle de programmation dans le profil Liberty

Mise en cache de bundle
Lorsque le serveur est arrêté, tous les bundles actuellement installés sont arrêtés et les métadonnées OSGi sont conservées dans un cache de bundle. Au démarrage par défaut, ces bundles installés sont renvoyés à leur état précédent. Lors d'un démarrage propre, les données persistantes de tous les bundles installés par FeatureBundleA sont supprimées. Par conséquent, ces bundles ne reprennent pas. FeatureBundleA est repris car il est réinstallé par le gestionnaire de fonctions, si UserFeatureA figure toujours dans la configuration du serveur. Si vous souhaitez réinstaller les bundles après un démarrage propre, il est de la responsabilité de FeatureBundleA de faire la réinstallation. Vous n'êtes pas avertis d'un démarrage propre, mais vous pouvez vérifier si un bundle est installé en utilisant la méthode OSGi BundleContext getBundle(String location).
Visibilité de package
Les bundles qui sont installés de façon dynamique, et ne sont pas répertoriés dans l'en-tête Subsystem-Content du fichier de manifeste de la fonction, ont la visibilité suivante :
  • Les bundles installés de manière dynamique peuvent importer les packages API et SPI fournis par l'ensemble actuellement configuré de fonctions.
  • Les packages qui sont exportés par les autres bundles dans la même extension de produit qui ne sont pas déclarés comme API ou SPI ne sont pas visibles pour les bundles installés dynamiquement.
  • Les packages qui sont exportés à partir de bundles installés dynamiquement ne peuvent pas être déclarés comme API ou SPI.
  • Il n'existe aucune restriction sur l'importation de packages qui sont exportés à partir de bundles installés de manière dynamique.
Support de modèle de programmation
Les bundles installés de manière dynamique peuvent utiliser des implémentations de spécifications d'entreprise OSGi si les fonctions d'exécution appropriées sont configurées pour leur activation.

Icône indiquant le type de rubrique Rubrique de référence

Dispositions pour les centres de documentation | Commentaires


Icône d'horodatage Dernière mise à jour: Wednesday, 2 September 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=rwlp_dynamic_content
Nom du fichier : rwlp_dynamic_content.html