Gestionnaires d'espace de nom Blueprint personnalisés
La spécification Blueprint Container, introduite dans la spécification OSGi Enterprise 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 OSGi Enterprise Release, 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 obtenir plus d'informations, veuillez vous référer aux informations sur la spécification OSGi Blueprint Container dans la documentation de WebSphere Developer Tools.
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<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 n'importe quel bundle s'exécutant dans Liberty, y compris dans les bundles Fonctions Liberty et les bundles Applications OSGI.