Représentation de Open Service Gateway Initiative
L'architecture du OSGI
La passerelle OSGI
Le Framework
Le Framework est le cœur de la passerelle résidentielle. C’est l’environnement d’exécution des bundles. L'administration du Framework inclut:
- l’installation des bundles sur la plate-forme
- le démarrage/arrêt des bundles
- la mise à jour et la suppression des bundles
Le Bundle
Un bundle est une unité de diffusion et de déploiement des services. Il propose ses services au Framework qui les gère et les exécute.
C’est un archivage contenant un ensemble de services satisfaisant les caractéristiques d’OSGI. Les bundles peuvent partager des classes java. Ils peuvent importer/exporter des paquetages disponibles à partir des bundles ou pour les autres bundles. Ils peuvent aussi fournir des services et enregistrer auprès des services déposés dans le Framework.
Le bundle est identifié de manière unique par un numéro d’identification. Quand le bundle est installé dans le Framework, il reçoit un identifiant unique qui sera le même durant toute la durée de vie du bundle.
De même l’état du bundle est fixé par le Framework. Les états sont:
- Installed: le bundle est correctement installé
- Resolved: le bundle est en attente mais il peut démarrer car tous les services nécessaires sont disponibles
- Starting: le bundle est en train de démarrer
- Stopping: le bundle est en train d’arrêter
- Active: le bundle est en cours de fonctionnement
- Uninstalled: le bundle est désinstallé
Le bundle dispose également d’une classe Activator, c’est la classe de démarrage. Il dispose de même un fichier Manifest, qui lui contient des spécifications sur le bundle.
Le Activator
C’est une classe publique qui implémente « BundleActivator », et donc implémente les méthodes suivantes :
- Start(BundleContext context)
- recherche et obtient des services requis auprès du contexte et/ou positionne des listeners sur des événements
- enregistre les services fournis auprès du contexte
- Stop(BundleContext context)
Cette objet permet au bundle de s’abonner aux événements du Framework. Le Framework détermine l’objet étant Activator selon le Manifest
Le fichier Manifest
Comme indiqué précédemment, le OSGI permet aux applications de découvrir dynamiquement et d’utiliser des services fournis par d’autres applications tournant sur la même plate-forme. Les informations permettant de se lire se trouvent dans le fichier Manifest aussi. Ce sont les premières lignes qui donnent les informations pertinentes à ce propos.
Les services
Les services sont des objets qui fournissent des fonctionnalités précises. Ces fonctionnalités sont décrites dans des classes implémentant ce service.
Le OSGI fournit un certain nombre de services comme un service de log, un service de configuration pour l’administrateur ou bien un service d’accès aux dispositifs. Il est également possible de créer ses propres services. Les logiciels permettant de le faire sont, Eclipse avec OSCAR ou ProSyst, Eclipse proposant l’outil gratuit et Open Source.
Exemple du code
Voici un exemple de création d’une classe Activator, implémentant la classe BundleActivator. Nous remarquons que les méthodes start et stop sont redéfinies. C’est dans la méthode start que le service est enregistré auprès du Framework.
Dans ce deuxième exemple, nous verrons l’optimisation des implémentations, en testant si les services dont on aura besoin, existent déjà dans le Framework ou pas.