Exécution de conteneurs eXtreme Scale avec des plug-in non dynamiques dans un environnement OSGi

Si vous n'avez pas besoin d'utiliser la capacité dynamique d'un environnement OSGi, vous pouvez toujours profiter des avantages d'un couplage plus strict, d'un conditionnement déclaratif et de dépendances de services qu'offre la structure OSGi.

Avant de commencer

  1. Développez votre application à l'aide des plug-in et API WebSphere eXtreme Scale.
  2. Empaquetez l'application en un ou plusieurs ensembles OSGi avec les dépendances d'importation et d'exportation appropriées déclarées dans un ou plusieurs manifestes d'ensemble. Assurez-vous que les classes ou packages requis pour les plug-in, les agents, les objet de données, etc., sont exportés.

Pourquoi et quand exécuter cette tâche

Avec les plug-in dynamiques, vous pouvez mettre à niveau les plug-in sans arrêter la grille. Pour utiliser cette capacité, les plug-in d'origine et les nouveaux plug-in doivent être compatibles. Si vous n'avez pas besoin de mettre à jour les plug-in, ou si vous pouvez vous permettre d'arrêter la grille afin de les mettre à niveau, vous pouvez peut-être vous passer de la complexité des plug-in dynamiques. Cependant, il existe de bonnes raisons d'exécuter votre application eXtreme Scale dans un environnement OSGi. Parmi ces raisons, l'utilisation d'un couplage plus strict, d'un conditionnement déclaratif, de dépendances de services, etc.

L'un des éléments importants de l'hébergement de la grille ou du client dans un environnement OSGi sans utiliser de plug-in dynamiques (plus précisément, sans déclarer les plug-in à l'aide des services OSGi) est la façon dont l'ensemble eXtreme Scale charge les classes de plug-in. L'ensemble eXtreme Scale s'appuie sur les services OSGi pour charger les classes de plug-in, ce qui permet à l'ensemble d'appeler des méthodes d'objet sur des classes dans d'autres ensembles sans importer directement les packages de ces classes.

Lorsque les plug-in ne sont disponibles via les services OSGi, l'ensemble eXtreme Scale doit pouvoir charger les classes de plug-in directement. Au lieu de modifier le manifeste de l'ensemble eXtreme Scale pour importer les packages et les classes d'utilisateur, créez un fragment d'ensemble qui ajoute les importations de package nécessaires. Le fragment peut également importer les classes nécessaires pour les autres classes d'utilisateur sans plug-in, telles que les classes d'objets de données et d'agent.

Procédure

  1. Créez un fragment OSGi qui utilise l'ensemble eXtreme Scale (client ou serveur, en fonction de l'environnement de déploiement voulu) comme hôtes. Le fragment déclare des dépendances (Import-Package) sur tous les packages qui doivent être chargés par un ou plusieurs plug-in. Par exemple, si vous installez un plug-in sérialiseur dont les classes résident dans le package com.mycompany.myapp.serializers et qui dépend des classes du package com.mycompany.myapp.common, le fichier de fragment META-INF/MANIFEST.MF ressemble à l'exemple suivant :
    Bundle-ManifestVersion: 2
    Bundle-Name: Plug-in fragment for XS serializers
    Bundle-SymbolicName: com.mycompany.myapp.myfragment; singleton:=true
    Bundle-Version: 1.0.0
    Fragment-Host: com.ibm.websphere.xs.server; bundle-version=7.1.1
    Manifest-Version: 1.0
    Import-Package: com.mycompany.myapp.serializers,
     com.mycompany.myapp.common
    …
    Ce manifeste doit être empaqueté dans un fichier JAR de fragment, qui dans cet exemple est com.mycompany.myapp.myfragment_1.0.0.jar.
  2. Déployez le nouveau fragment, l'ensemble eXtreme Scale et les ensembles d'applications dans votre environnement OSGi. A présent, démarrez les ensembles.

Résultats

Vous pouvez maintenant tester et exécuter votre application dans l'environnement OSGi sans utiliser les services OSGi pour charger les classes d'utilisateur, comme par exemple les plug-in et les agents.