[8.5.5.4 ou ultérieure]

Gestionnaires d'espace de nom Blueprint personnalisés

La spécification Blueprint Container, introduite dans la spécification Enterprise OSGi version 5, fournit un modèle de programmation simple pour la création d'applications dynamiques dans l'environnement OSGi sans l'ajout de complexité dans le code Java™.

Pour plus d'information sur cette version de spécification Enterprise OSGi, voir OSGi specification download.

La spécification Blueprint Container définit une infrastructure Dependency injection pour OSGi. Elle est conçue pour gérer la nature dynamique d'OSGi, où les services peuvent devenir disponibles et indisponibles à tout moment. Cette spécification est également conçue pour fonctionner avec des objets Java simples (POJOs) de sorte que les mêmes objets puissent être utilisés à l'intérieur et à l'extérieur de l'infrastructure OSGi. Les fichiers XML Blueprint qui définissent et décrivent les différents composants d'une application sont au centre du modèle de programmation Blueprint. La spécification décrit comment les composants sont instanciés et interconnectés pour former une application opérationnelle. Pour plus d'informations, voir OSGi Blueprint Container Specification.

Chaque bundle Blueprint doit contenir un fichier XML Blueprint XML afin que l'exécution Blueprint puisse traiter le composant Blueprint du bundle. L'élément Blueprint standard est défini par la spécification Blueprint OSGi, et il est requis dans chaque document XML Blueprint. Il définit l'espace de nom par défaut sur http://www.osgi.org/xmlns/blueprint/v1.0.0, par exemple :
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
D'autres espaces de nom peuvent être ajoutés au Blueprint à l'aide de règles XML standard, soit en tant tant qu'entrées préfixées, ou directement au sein des éléments XML personnalisés. Ces espaces de nom peuvent être ajoutés au niveau supérieur ou ils peuvent être en ligne avec les éléments XML personnalisés. S'il s'agit d'un XML valide, il est analysé correctement. Voici un exemple d'espace défini dans l'élément Blueprint de niveau supérieur :
<blueprint 
  xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
  xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0">
Voici un exemple d'espace en ligne dans un élément personnalisé :
<transaction method="*" value="Required"
  xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0"/>

L'implémentation d'exécution Blueprint qui est fournie par le projet Apache Aries permet de prendre en charge les bundles Blueprint qui figurent dans les applications OSGi pour Liberty. Pour plus d'informations, voir Apache Aries. L'exécution Blueprint Aries fournit un mécanisme d'extension appelé gestionnaire d'espace de noms. Ce gestionnaire d'espace de nom fournit un processeur pour les extensions ou les espaces de nom Blueprint personnalisés. Un gestionnaire d'espace de nom implémente l'interface org.apache.aries.blueprint.NamespaceHandler et doit être enregistré dans le registre du service OSGi avec une propriété de service osgi.service.blueprint.namespace associée. Cette propriété dénote les URI d'espace de nom que ce gestionnaire peut traiter. Par exemple: http://aries.apache.org/xmlns/transactions/v1.0.0. La valeur de propriété du service peut être une valeur String ou URI unique, ou une valeur Collection, ou encore un tableau de valeurs String ou URI.

L'exécution Blueprint analyse les descripteurs Blueprint deux fois. Le premier passage est rapide et recherche uniquement chaque espace de nom qui est utilisé par le bundle Blueprint. Si le bundle Blueprint utilise un espace de nom non standard, le conteneur Blueprint essaie de localiser les services NamespaceHandler dans le registre du service OSGi pour chaque espace de nom personnalisé. Un service NamespaceHandler publie chaque espace de nom XML qu'il peut traiter à l'aide de propriétés de service OSGi. L'exécution Blueprint n'analyse pas l'espace de nom XML Blueprint tant que les services NamespaceHandler n'ont pas été trouvés pour chaque espace de nom personnalisé qui est utilisé dans le bundle. Si les services NamespaceHandler sont introuvables pour chaque espace de nom personnalisé, le conteneur Blueprint ne peut pas traiter le bundle. Ce résultat peut signifier que le conteneur Blueprint attend indéfiniment en l'absence d'un élément NamespaceHandler. Si cette situation se produit, le conteneur Blueprint émet un avertissement dans le journal. Lorsque l'analyseur syntaxique commence à analyser les fichiers XML Blueprint, il analyse les éléments Blueprint standard. Lorsqu'il parvient à un élément personnalisé, l'analyseur syntaxique appelle l'élément NamespaceHandler qui a publié le support pour l'espace de nom de l'élément personnalisé. Ici, Here, les services NamespaceHandler ont la possibilité de traiter les informations dans l'élément personnalisé, de modifier le modèle Blueprint d'exécution ou d'effectuer toute autre opération. En cas d'erreur de saisie dans l'une des définitions d'espace de nom, il est très probable que le Blueprint ne pourra pas démarrer.

Un service NamespaceHandler personnalisé peut être fourni par un bundle qui s'exécute dans Liberty, y compris les Bundles de fonction Liberty et les bundles d'applications OSGi.


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_blueprint_namespace_handler
Nom du fichier : rwlp_blueprint_namespace_handler.html